在 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。
对于以前的 Windows 版本,可以从设备管理器打印信息,但似乎不再可以在 Windows 7 中执行此操作。
我正在寻找一个 Powershell 脚本,它将所有出现在设备管理器中的设备导出到一个文本文件,如果可能的话,还可以选择在树状设备管理器类型的视图中创建它。
这在很多情况下都会很有帮助,但我从我所做的研究中没有发现任何类似的东西。
我了解如何获取安装到证书存储中的证书的指纹,但是我希望有一种方法可以获取证书文件的该信息。
例如,我有 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) 在我的计算机(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附带的模块会更可取。
设置以下$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脚本动态打开图片?
我想在没有蓝屏的情况下静默执行PowerShell命令。
如何从PowerShell命令执行此操作?
我试过这个。. .
PowerShell.exe -windowstyle hidden
Run Code Online (Sandbox Code Playgroud)
但它不起作用 - 命令已执行但蓝屏仍然存在。
我打开了一个空的 Windows PowerShell 窗口,但尚未在该窗口中输入任何命令。默认的、未更改的目录是我的用户帐户文件夹。我想用键盘快捷键关闭窗口。
不起作用:
Ctrl-w (将文本添加^W到编辑器中)
Ctrl-d (将文本添加^D到编辑器中)
Alt-F4 (什么也没做)
exit其次是{Enter}(有效,但顺序繁琐)
在不使用AutoHotkey脚本的情况下,是否有针对此问题的本地解决方案?我正在使用 Windows 10。
我需要导入一个证书文件来Trusted Root Certification Authorities存储,以在访问我的本地网站时摆脱 SSL 警告。我目前这样做的方式很长:使用谷歌浏览器?设置?先进的 ?隐私和安全 ? 管理证书 ? 受信任的根证书颁发机构 ? 进口...
它看起来像是某种 Windows 管理单元,而不是 Chrome 的自定义窗口。执行所有这些步骤只是为了导入 1KiB 证书文件是愚蠢的。我可以在 PowerShell 上执行此操作,以便可以通过脚本自动执行此操作吗?或者至少如何在没有 Google Chrome 的情况下打开上述窗口?
在学习 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
我正在使用从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 实现这一目标?
powershell ×10
certificate ×2
ssl ×2
windows ×2
command-line ×1
console ×1
exit ×1
help-files ×1
openssh ×1
sftp ×1
ssh ×1
updates ×1
windows-10 ×1
windows-7 ×1