如何在 PowerShell 中按任意键继续

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

在 PowerShell 脚本中,启用“按任意键继续”功能是一个常见的需求,特别是在创建交互式命令行应用程序或向用户提供反馈时。有几种方法可以实现此功能,每种方法都有其自身的优点和用例。

本文探讨了在 PowerShell 脚本中实现“按任意键继续”功能的各种方法,从内置 cmdlet 到利用外部命令和 COM 对象。

使用 ReadKey (System.Console) 启用 PowerShell 中的“按任意键继续”

在 PowerShell 中,[System.Console]::ReadKey() 方法用于从标准输入流(通常是键盘)读取用户按下的下一个键或功能键。当没有任何参数调用时,此方法会等待用户按下一个键,并返回一个类型为 [System.ConsoleKeyInfo] 的对象,表示所按的键。

System.Console ReadKey 如下执行。它接受除 ShiftAltCtrl 和其他修饰键以外的任何键。

$keyInfo = [System.Console]::ReadKey($true)
Write-Host "Key Pressed: $($keyInfo.KeyChar)"

在代码行 $keyInfo = [System.Console]::ReadKey($true) 中,我们利用 [System.Console]::ReadKey() 方法捕获用户输入。通过传递 $true 作为参数,我们表明所按的键不应显示在控制台窗口中。

这防止了控制台中出现不必要的字符,使用户体验更清晰。要显示 $keyInfo 的输出,我们可以使用点符号访问它的属性。

输出:

powershell 按任意键继续 - 输出 1

使用 ReadKey (Console) 启用 PowerShell 中的“按任意键继续”

您可以使用 [Console]::ReadKey() 在 PowerShell 中启用“按任意键继续”。它可以读取键和修饰符,同时暂停执行。它排除了 ShiftAltCtrl 和其他修饰键。

$keyInfo = [Console]::ReadKey()

在代码行 $keyInfo = [Console]::ReadKey() 中,我们利用 [Console]::ReadKey() 方法捕获用户输入。此方法等待用户按下一个键,并返回一个表示所按键的对象,将其存储在变量 $keyInfo 中。

输出:

powershell 按任意键继续 - 输出 2

使用 ReadKey (RawUI) 启用 PowerShell 中的“按任意键继续”

在 PowerShell 中,$Host.UI.RawUI.ReadKey() 方法用于从控制台输入读取用户按下的下一个键或功能键。当调用时,此方法等待用户按下一个键并返回一个表示所按键的对象。

此对象包含诸如 Character 的属性,表示所按键的 Unicode 字符,以及 KeyDown,指示键是否被按下。

此方法与 [Console]::ReadKey() 类似。它接受任何键,包括 CtrlShiftAlt 和其他修饰键。

可以在 RawUI ReadKey 方法中传递不同的 ReadKeyOptions,例如 IncludeKeyDownIncludeKeyUpNoEchoAllowCtrlC

示例:

$keyInfo = $Host.UI.RawUI.ReadKey()

在此示例中,我们使用 $Host.UI.RawUI.ReadKey() 捕获用户按下的键并将其存储在 $keyInfo 变量中。此方法等待用户按下一个键并返回一个表示所按键的对象。

$keyInfo 对象包含诸如 Character(表示所按键的字符)和 KeyDown(指示键是否被按下)等属性。

输出:

powershell 按任意键继续 - 输出 3

使用 Read-Host 启用 PowerShell 中的“按任意键继续”

PowerShell 中的 Read-Host cmdlet 是一个多功能工具,用于从控制台窗口捕获用户输入。其主要目的是向用户显示提示消息,并等待他们输入一个值,然后将其存储在变量中以便在脚本中进一步处理。

示例:

Read-Host -Prompt "Press any key to continue"

在此示例中,我们使用 Read-Host-Prompt 参数向用户显示消息“按任意键继续…”。脚本在此处暂停执行,等待用户输入任何文本后按 Enter 键。

尽管不完全是“按任意键”,但此方法通过要求用户输入来实现类似的结果。

输出:

powershell 按任意键继续 - 输出 4

使用 cmd /c 'pause' 命令在 PowerShell 中启用“按任意键继续”

在 PowerShell 脚本中,cmd /c 'pause' 方法提供了一种简单的方式来暂停脚本执行,并在继续之前等待用户确认。此方法利用 cmd 命令在 PowerShell 脚本中执行暂停命令。

执行时,暂停命令显示消息“按任意键继续 . . .”,并等待用户按下任意键,然后允许脚本继续执行。

示例:

cmd /c pause

在此示例中,我们使用 cmd /c 'pause' 命令来暂停脚本执行,并等待用户输入。执行时,命令提示符窗口显示消息“按任意键继续 . . .”,并在用户按下任意键之前等待,然后允许脚本继续。

输出:

powershell 按任意键继续 - 输出 5

使用 timeout 在 PowerShell 中启用“按任意键继续”

timeout 命令可以暂停执行特定时间段或无限时间。您可以使用 /t 选项指定以秒为单位的时间。

指定的超时有效值范围为 -199999

示例:

timeout /t 5

在此示例中,我们使用 timeout 命令将脚本执行暂停 5 秒。这有效地创建了一个提示,要求用户在继续之前等待 5 秒。

输出:

powershell 按任意键继续 - 输出 6

-1 值用于在未按下键时无限期暂停执行。

timeout /t -1

输出:

powershell 按任意键继续 - 输出 7

结论

在 PowerShell 脚本中实现“按任意键继续”功能对于创建交互式和用户友好的命令行应用程序至关重要。通过利用方法例如 [System.Console]::ReadKey()[Console]::ReadKey()Read-Hostcmd /c 'pause'timeoutWScript.Shell Popup,脚本作者可以为用户提供清晰的提示,并在用户确认之前暂停执行。

每种方法提供独特的功能,并可以根据具体要求进行定制,确保无缝的用户体验和增强的脚本交互性。无论是显示信息消息、确认操作还是创建交互式实用程序,PowerShell 都提供多功能工具以满足各种脚本需求。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相关文章 - PowerShell Input