如何在 PowerShell 中按任意键继续
-
使用
ReadKey (System.Console)
启用 PowerShell 中的“按任意键继续” -
使用
ReadKey (Console)
启用 PowerShell 中的“按任意键继续” -
使用
ReadKey (RawUI)
启用 PowerShell 中的“按任意键继续” -
使用
Read-Host
启用 PowerShell 中的“按任意键继续” -
使用
cmd /c 'pause'
命令在 PowerShell 中启用“按任意键继续” -
使用
timeout
在 PowerShell 中启用“按任意键继续” - 结论

在 PowerShell 脚本中,启用“按任意键继续”功能是一个常见的需求,特别是在创建交互式命令行应用程序或向用户提供反馈时。有几种方法可以实现此功能,每种方法都有其自身的优点和用例。
本文探讨了在 PowerShell 脚本中实现“按任意键继续”功能的各种方法,从内置 cmdlet 到利用外部命令和 COM 对象。
使用 ReadKey (System.Console)
启用 PowerShell 中的“按任意键继续”
在 PowerShell 中,[System.Console]::ReadKey()
方法用于从标准输入流(通常是键盘)读取用户按下的下一个键或功能键。当没有任何参数调用时,此方法会等待用户按下一个键,并返回一个类型为 [System.ConsoleKeyInfo]
的对象,表示所按的键。
System.Console ReadKey
如下执行。它接受除 Shift、Alt、Ctrl 和其他修饰键以外的任何键。
$keyInfo = [System.Console]::ReadKey($true)
Write-Host "Key Pressed: $($keyInfo.KeyChar)"
在代码行 $keyInfo = [System.Console]::ReadKey($true)
中,我们利用 [System.Console]::ReadKey()
方法捕获用户输入。通过传递 $true
作为参数,我们表明所按的键不应显示在控制台窗口中。
这防止了控制台中出现不必要的字符,使用户体验更清晰。要显示 $keyInfo
的输出,我们可以使用点符号访问它的属性。
输出:
使用 ReadKey (Console)
启用 PowerShell 中的“按任意键继续”
您可以使用 [Console]::ReadKey()
在 PowerShell 中启用“按任意键继续”。它可以读取键和修饰符,同时暂停执行。它排除了 Shift、Alt、Ctrl 和其他修饰键。
$keyInfo = [Console]::ReadKey()
在代码行 $keyInfo = [Console]::ReadKey()
中,我们利用 [Console]::ReadKey()
方法捕获用户输入。此方法等待用户按下一个键,并返回一个表示所按键的对象,将其存储在变量 $keyInfo
中。
输出:
使用 ReadKey (RawUI)
启用 PowerShell 中的“按任意键继续”
在 PowerShell 中,$Host.UI.RawUI.ReadKey()
方法用于从控制台输入读取用户按下的下一个键或功能键。当调用时,此方法等待用户按下一个键并返回一个表示所按键的对象。
此对象包含诸如 Character
的属性,表示所按键的 Unicode 字符,以及 KeyDown
,指示键是否被按下。
此方法与 [Console]::ReadKey()
类似。它接受任何键,包括 Ctrl、Shift、Alt 和其他修饰键。
可以在 RawUI ReadKey
方法中传递不同的 ReadKeyOptions
,例如 IncludeKeyDown
、IncludeKeyUp
、NoEcho
和 AllowCtrlC
。
示例:
$keyInfo = $Host.UI.RawUI.ReadKey()
在此示例中,我们使用 $Host.UI.RawUI.ReadKey()
捕获用户按下的键并将其存储在 $keyInfo
变量中。此方法等待用户按下一个键并返回一个表示所按键的对象。
$keyInfo
对象包含诸如 Character
(表示所按键的字符)和 KeyDown
(指示键是否被按下)等属性。
输出:
使用 Read-Host
启用 PowerShell 中的“按任意键继续”
PowerShell 中的 Read-Host
cmdlet 是一个多功能工具,用于从控制台窗口捕获用户输入。其主要目的是向用户显示提示消息,并等待他们输入一个值,然后将其存储在变量中以便在脚本中进一步处理。
示例:
Read-Host -Prompt "Press any key to continue"
在此示例中,我们使用 Read-Host
和 -Prompt
参数向用户显示消息“按任意键继续…”。脚本在此处暂停执行,等待用户输入任何文本后按 Enter 键。
尽管不完全是“按任意键”,但此方法通过要求用户输入来实现类似的结果。
输出:
使用 cmd /c 'pause'
命令在 PowerShell 中启用“按任意键继续”
在 PowerShell 脚本中,cmd /c 'pause'
方法提供了一种简单的方式来暂停脚本执行,并在继续之前等待用户确认。此方法利用 cmd
命令在 PowerShell 脚本中执行暂停命令。
执行时,暂停命令显示消息“按任意键继续 . . .”,并等待用户按下任意键,然后允许脚本继续执行。
示例:
cmd /c pause
在此示例中,我们使用 cmd /c 'pause'
命令来暂停脚本执行,并等待用户输入。执行时,命令提示符窗口显示消息“按任意键继续 . . .”,并在用户按下任意键之前等待,然后允许脚本继续。
输出:
使用 timeout
在 PowerShell 中启用“按任意键继续”
timeout
命令可以暂停执行特定时间段或无限时间。您可以使用 /t
选项指定以秒为单位的时间。
指定的超时有效值范围为 -1
到 99999
。
示例:
timeout /t 5
在此示例中,我们使用 timeout
命令将脚本执行暂停 5 秒。这有效地创建了一个提示,要求用户在继续之前等待 5 秒。
输出:
-1
值用于在未按下键时无限期暂停执行。
timeout /t -1
输出:
结论
在 PowerShell 脚本中实现“按任意键继续”功能对于创建交互式和用户友好的命令行应用程序至关重要。通过利用方法例如 [System.Console]::ReadKey()
、[Console]::ReadKey()
、Read-Host
、cmd /c 'pause'
、timeout
和 WScript.Shell Popup
,脚本作者可以为用户提供清晰的提示,并在用户确认之前暂停执行。
每种方法提供独特的功能,并可以根据具体要求进行定制,确保无缝的用户体验和增强的脚本交互性。无论是显示信息消息、确认操作还是创建交互式实用程序,PowerShell 都提供多功能工具以满足各种脚本需求。