按任意键继续

Jef*_*f B 63 powershell

根据Microsoft的文档,read-host让用户输入一些输入,然后按Enter继续.如果您想要"按任意键继续",则行为不正确.(等等...... Any钥匙在哪里?!)

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

我已经尝试搜索"单字符输入"和"powershell输入",看看我是否能找到所有获取输入的方法列表而没有太多运气.这看起来希望使用一些堆栈溢出问题read-host实际的工作"按任意键..."功能.

Knu*_*ger 96

这是我使用的.

Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');
Run Code Online (Sandbox Code Playgroud)

  • 我收到一个错误:```用"1"参数调用"ReadKey"的异常:"方法或操作没有实现." 在C:\ file.ps1:26 char:5 + $ null = $ Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:NotImplementedException``` (14认同)
  • @gakera这在Powershell ISE下不起作用. (14认同)

小智 32

我创建了一个小的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")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在VSCode中不起作用 (2认同)

Tre*_*van 19

查看.NET类的ReadKey()方法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());
Run Code Online (Sandbox Code Playgroud)

  • 这仅适用于powershell.exe - 它不适用于ISE等图形主机. (6认同)
  • 为漂亮和简单点赞。 (3认同)