根据Microsoft的documentation,read-host
允许用户输入一些输入,然后按Enter继续。如果您想要“按任意键继续”,则行为不正确。 (等等......哪里是 Any 键?!)
有没有办法实现这个目标?像read-char
?
我已经尝试搜索“单字符输入”和“powershell输入”,以查看是否可以找到所有获取输入的方法列表而没有太多运气。还有一些Stack Overflow问题看起来很有希望使用read-host
而实际无法使用“按任意键......”功能。
答案 0 :(得分:79)
这是我使用的。
Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
答案 1 :(得分:26)
我创建了一个小的Powershell函数来模拟MSDOS pause
。这可以处理运行Powershell ISE还是非ISE。 (ReadKey
不在powershell ISE中工作)。运行Powershell ISE时,此功能将打开Windows MessageBox
。这有时会令人困惑,因为MessageBox
并不总是成为最重要的。无论如何,这里是:
使用方法:
pause "Press any key to continue"
功能定义:
Function pause ($message)
{
# Check if running Powershell ISE
if ($psISE)
{
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("$message")
}
else
{
Write-Host "$message" -ForegroundColor Yellow
$x = $host.ui.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}
}
答案 2 :(得分:14)
查看ReadKey()
.NET类上的System.Console
方法。我认为这会做你想要的。
http://msdn.microsoft.com/en-us/library/system.console.readkey(v=vs.110).aspx
示例:
Write-Host -Object ('The key that was pressed was: {0}' -f [System.Console]::ReadKey().Key.ToString());