Powershell 按任意键继续

Powershell 按任意键继续,powershell,Powershell,根据微软的,readhost允许用户键入一些输入,然后按enter键继续。如果您希望“按任意键继续”,则不完全是正确的行为。(等等…钥匙在哪里?!) 有没有办法做到这一点?类似于读取字符 我试着搜索“单字符输入”和“powershell输入”,看看是否能找到一个列表,其中列出了在没有太多运气的情况下获取输入的所有方法。还有一些堆栈溢出问题看起来很有希望使用读取主机,但实际上不适用于“按任意键…”功能。查看System.Console.NET类上的读取键()方法。我想这会满足你的要求 例如: W

根据微软的,
readhost
允许用户键入一些输入,然后按enter键继续。如果您希望“按任意键继续”,则不完全是正确的行为。(等等…钥匙在哪里?!)

有没有办法做到这一点?类似于
读取字符


我试着搜索“单字符输入”和“powershell输入”,看看是否能找到一个列表,其中列出了在没有太多运气的情况下获取输入的所有方法。还有一些堆栈溢出问题看起来很有希望使用
读取主机
,但实际上不适用于“按任意键…”功能。

查看
System.Console
.NET类上的
读取键()
方法。我想这会满足你的要求

例如:

Write-Host -Object ('The key that was pressed was: {0}' -f [System.Console]::ReadKey().Key.ToString());
这是我用的

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

我创建了一个小的Powershell函数来模拟MSDOS
pause
。这将处理是否运行Powershell ISE或非ISE。(
ReadKey
在powershell ISE中不工作)。运行Powershell ISE时,此功能会打开一个Windows
消息框
。这有时会令人困惑,因为
消息框
并不总是最重要的。不管怎么说,它是这样的:

用法:
pause“按任意键继续”

功能定义:

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")
    }
}

Nice old(通过搜索Powershell和Pause找到,Pause是命令提示符/MS dos中显示该文本的命令)这仅在Powershell.exe中有效-对于Nice和simple,它在ISE.Up-vote这样的图形主机上不起作用。我收到一个错误:
调用带有“1”参数的“ReadKey”时出现异常:“未实现该方法或操作。”在C:\file.ps1:26处字符:5+$null=$Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~类别信息:未指定:(:)[],MethodInvocationException+FullyQualifiedErrorId:NotImplementedException
@gakera这在Powershell ISE下不起作用。请查看(Jerry G)的答案,了解如何修复ISE。这些问题导致我出现此问题,该问题在VSCode$message中不起作用=“按任意键继续”暂停($message)对我来说,它在ise和powershell中工作,我只添加了这几行,也许你需要在vs代码中也这样做?!@ZaxLofful