按任意键继续

时间:2014-01-02 15:34:15

标签: powershell

根据Microsoft的documentationread-host允许用户输入一些输入,然后按Enter继续。如果您想要“按任意键继续”,则行为不正确。 (等等......哪里是 Any 键?!)

有没有办法实现这个目标?像read-char

这样的东西

我已经尝试搜索“单字符输入”和“powershell输入”,以查看是否可以找到所有获取输入的方法列表而没有太多运气。还有一些Stack Overflow问题看起来很有希望使用read-host实际无法使用“按任意键......”功能。

3 个答案:

答案 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());