如何在 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 及其他修飾鍵。

有不同的 ReadKeyOptions 可以在 RawUI ReadKey 方法中傳遞,例如 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