如何在 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 及其他修飾鍵。
有不同的 ReadKeyOptions 可以在 RawUI ReadKey 方法中傳遞,例如 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 都提供多功能的工具以滿足多樣化的腳本需求。
