标签: powershell

更改 Windows shell 命令历史检索的顺序

在 MS-Windows 下的命令行中让我发疯的一件事是,当您使用向上和向下箭头键时,Windows shell(标准 shell 和 PowerShell)从历史记录中检索命令的顺序。

我逐渐喜欢的标准方式,因为它基本上在世界上所有其他 shell 中都是这样做的,是将最后一个命令放入历史堆栈,然后按 up 将检索我运行的最后一个命令,“向上”再次将检索之前的那个,依此类推。如果您从历史记录中选择一个命令并再次提交,该命令将被复制到堆栈的顶部,如果您在下一个提示中向上按,您可以看到最后一个命令,然后是上一个到最后一个命令。如果在浏览历史记录后按“向下”键越过历史堆栈中最近的命令,您将返回到空提示(或您开始浏览历史记录之前的任何提示)。

在 Windows shell 中,它的工作方式非常不同:如果历史记录中有 3 个命令——例如让我们称它们为“A”、“B”和“C”——并且你使用向上箭头键选择命令“B”并执行再次,然后在下一个提示中再次使用向上箭头键,外壳将显示“B”。但这不是您执行的最后一个命令(尽管“B”确实再次复制到历史堆栈中),就像您再次按“向上”键一样,您将显示“A”而不是“C”。如果您向下浏览(到后面的条目),您将再次看到“B”,然后是“C”,然后是“B”,这是输入的最后一个命令 - 但您也不能再进一步:那里

我的问题 - 是否可以设置一些设置来改变这种行为?

我知道只获取 bash 或类似的东西并在 Windows 上使用它的选项,但由于外部限制(如 - 这就是我需要在其中编写脚本的内容),我必须在 PowerShell 或其他 Windows 中工作可以调用 PowerShell 脚本的 shell。

powershell console command-line command-history

9
推荐指数
2
解决办法
997
查看次数

将设备管理器中的所有设备导出为树或列表的 Powershell 脚本?

对于以前的 Windows 版本,可以从设备管理器打印信息,但似乎不再可以在 Windows 7 中执行此操作。

我正在寻找一个 Powershell 脚本,它将所有出现在设备管理器中的设备导出到一个文本文件,如果可能的话,还可以选择在树状设备管理器类型的视图中创建它。

这在很多情况下都会很有帮助,但我从我所做的研究中没有发现任何类似的东西。

windows-7 device-manager powershell

8
推荐指数
2
解决办法
3万
查看次数

如何从 SSL 证书文件(而不是 Windows 证书存储区)中提取指纹?

我了解如何获取安装到证书存储中的证书的指纹,但是我希望有一种方法可以获取证书文件的该信息。

例如,我有 c:\temp\mycert.com.cer...我如何从该文件中获取指纹?有可能吗?谷歌并没有提供太多帮助。我一直在 powershell 中这样做,以便从证书存储中获取此信息,但同样 - 我需要从证书文件中获取此信息。

$certCN = mysite.com
$cert = Get-ChildItem cert:\LocalMachine\My -Recurse | where {$_.subject -like "*CN=$certCN*"} | where {$_.ExpiringInDays -lt "91"}
$thumbprint = $cert.thumbprint
Run Code Online (Sandbox Code Playgroud)

powershell certificate ssl

8
推荐指数
1
解决办法
1万
查看次数

update-help 更新两个模块失败

在我的计算机(Win10 Enterprise x64、1709)上运行Update-Help返回两个错误:

更新帮助:无法更新模块“AutoSequencer、HostNetworkingService、WindowsUpdateProvider”与 UI 文化 {en-US} 的帮助:无法检索 UI 文化 en-US 的 HelpInfo XML 文件。确保模块清单中的 HelpInfoUri 属性有效或检查您的网络连接,然后重试该命令。

在第 1 行字符:1 + 更新帮助 + ~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (:) [Update-Help], Exception +fullyQualifiedErrorId : UnableToRetrieveHelpInfoXml,Microsoft.PowerShell.Commands.UpdateHelpCommand

更新帮助:无法使用 UI 文化更新模块“PrintManagement”的帮助{en-US}:无法连接到帮助内容。存储帮助内容的服务器可能不可用。验证服务器是否可用,或等到服务器重新联机,然后重试该命令。

在第 1 行字符:1 + 更新帮助 + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Update-Help], Exception +fullyQualifiedErrorId : UnableToConnect,Microsoft.PowerShell.Commands.UpdateHelpCommand

这是一个问题,因为我是第一次编写 Windows 更新脚本,并且拥有WindowsUpdateProvider的帮助文件很重要。即使我知道如何查找和修复“ HelpInfoUri ”属性,我也不知道该将其设置为什么 - Google 搜索“ WindowsUpdateProvider help ”主要返回人们以各种语言询问此问题,但没有解决方案我可以看。这同样意味着我无法通过使用在线帮助解决该问题。(Get-Help WindowsUpdateProvider -online 返回类似的错误。)

我知道“ PSWindowsUpdate ”模块,但由于我们的流程,使用Windows 10附带的模块会更可取。

windows-update powershell help-files updates

8
推荐指数
2
解决办法
8805
查看次数

如何使用 PowerShell 脚本打开 image.png?

设置以下$usbDriveLetter变量以自动查找 USB 驱动器盘符,并使用该变量在 USB 上打开图像不起作用。它在 cmd 中打印“G:\image.png”。

$usbDriveLetter = (gwmi win32_volume -f 'label=''USB_NAME_HERE''').Name;
"$usbDriveLetter" + "image.png"
Run Code Online (Sandbox Code Playgroud)

但是,如果我不使用 var 并在 PowerShell 脚本中将 "G:\" 设为静态,则图像会打开得很好。

G:\image.png
Run Code Online (Sandbox Code Playgroud)

那么我在这里做错了什么?我们如何使用ps1脚本动态打开图片?

windows powershell

8
推荐指数
1
解决办法
1万
查看次数

如何静默运行 PowerShell 命令?

我想在没有蓝屏的情况下静默执行PowerShell命令。

如何从PowerShell命令执行此操作?

我试过这个。. .

PowerShell.exe -windowstyle hidden 
Run Code Online (Sandbox Code Playgroud)

但它不起作用 - 命令已执行但蓝屏仍然存在。

powershell

8
推荐指数
1
解决办法
7万
查看次数

什么是关闭 Windows PowerShell 窗口的键盘快捷键?

我打开了一个空的 Windows PowerShell 窗口,但尚未在该窗口中输入任何命令。默认的、未更改的目录是我的用户帐户文件夹。我想用键盘快捷键关闭窗口。


不起作用:

  • Ctrl-w (将文本添加^W到编辑器中)

  • Ctrl-d (将文本添加^D到编辑器中)

  • Alt-F4 (什么也没做)

  • exit其次是{Enter}(有效,但顺序繁琐)


在不使用AutoHotkey脚本的情况下,是否有针对此问题的本地解决方案?我正在使用 Windows 10。

keyboard-shortcuts powershell exit windows-10

8
推荐指数
2
解决办法
6969
查看次数

在 Windows 上使用命令行导入证书

我需要导入一个证书文件来Trusted Root Certification Authorities存储,以在访问我的本地网站时摆脱 SSL 警告。我目前这样做的方式很长:使用谷歌浏览器?设置?先进的 ?隐私和安全 ? 管理证书 ? 受信任的根证书颁发机构 ? 进口...

在此处输入图片说明

它看起来像是某种 Windows 管理单元,而不是 Chrome 的自定义窗口。执行所有这些步骤只是为了导入 1KiB 证书文件是愚蠢的。我可以在 PowerShell 上执行此操作,以便可以通过脚本自动执行此操作吗?或者至少如何在没有 Google Chrome 的情况下打开上述窗口?

powershell certificate ssl

8
推荐指数
1
解决办法
4万
查看次数

${$} 在 PowerShell 中是什么意思/做什么?

在学习 PowerShell 时,我${$}错误地执行了命令并得到如下输出:

PS C:\Users\myuser> Get-ChildItem Env: | Out-File -FilePath $home\env.txt
PS C:\Users\myuser> ${$}
$home\env.txt
Run Code Online (Sandbox Code Playgroud)

首先,我认为它类似于$_,但这样${$_}做的行为并不相同。

根据我尝试过的其他示例,它似乎从上一个命令中检索了最后一个参数,但我不太确定它是如何工作的或它实际在做什么。

我希望得到解释或指向文档/解释的链接。

PowerShell 主机信息(如果需要):

名称:ConsoleHost
版本:5.1.17134.858
InstanceId:[删除,因为我不小心,如果可以不小心共享]
UI:System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture:en-US
CurrentUICulture:en-US
PrivateData:Microsoft。 PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace

powershell powershell-5.0

8
推荐指数
1
解决办法
167
查看次数

如何在 Windows Server 上的 OpenSSH 中限制用户使用 sftp?

我正在使用从https://github.com/PowerShell/Win32-OpenSSH/releases下载的 OpenSSH 。

我的目标是设置一个 ssh 服务器,允许 sftp 文件传输而无需 ssh 访问。根据OpenSSH提供的官方文档,Windows从7.7版本开始应该支持这一点。已发布,应该在 sshd_config 中设置限制,我尝试使用该文件一段时间,但我无法限制自己只能访问子文件夹,这就是我的配置文件中的内容添加:

Subsystem   sftp    sftp-server.exe
ForceCommand internal-sftp 
ChrootDirectory c:\users\myusername 
AllowTcpForwarding no 
PermitTunnel no
GatewayPorts no
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么这不起作用?或者我不能像这样设置 SFTP 访问?

另一种选择是禁用 SSH 连接。如何在 Windows 中使用 OpenSSH 实现这一目标?

windows ssh powershell openssh sftp

8
推荐指数
1
解决办法
3万
查看次数