PowerShell 是系統管理員和開發人員的強大工具,但重複性工作可能會拖慢你的速度。透過管理 Cmdlet 歷程記錄並運用PSReadLine的功能,你可以簡化工作流程、節省時間並提升生產力。本指南將帶你了解實用技巧和情境,以充分利用 PowerShell Cmdlet 歷程記錄和 PSReadLine。
為什麼管理 Cmdlet 歷程記錄很重要
想像一下反覆執行一連串複雜的命令,或對跨越多行的指令碼進行疑難排解。你無需重新輸入命令或翻找舊指令碼,只需存取 Cmdlet 歷程記錄即可快速重複使用。透過PSReadLine,你可以透過自訂體驗和啟用預測性 IntelliSense 更進一步。
存取 Cmdlet 歷程記錄
PowerShell 會自動將命令歷程記錄儲存在檔案中,方便查閱或編輯。存取方式如下:
Cmdlet 歷程記錄檔案的位置
Cmdlet 歷程記錄檔案位於:C:\Users\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

管理 Cmdlet 歷程記錄的步驟
- 找到該檔案
開啟該資料夾,找到名為ConsoleHost_history.txt. - 編輯該檔案
使用任何文字編輯器(例如記事本、VS Code)來新增、移除或修改命令。 - 建立捷徑
在桌面上為該檔案建立捷徑,以便快速存取。
常見使用案例
一個典型的情境是為伺服器維護重複使用一連串命令。例如,如果你經常執行命令來重新啟動服務、檢查記錄檔或設定設定值,可以將這些命令儲存在歷程記錄檔案中以便快速存取。
釋放 PSReadLine 的全部潛力
PSReadLine 是增強 PowerShell 主控台體驗的模組。它提供語法色彩標示、預測性 IntelliSense 和自訂按鍵繫結等功能,讓使用 PowerShell 變得更加輕鬆。
PSReadLine 的主要功能
- 語法色彩標示
醒目顯示語法錯誤,讓命令更易讀。 - 預測性 IntelliSense
根據你的歷程記錄或外掛程式自動建議命令。 - 自訂按鍵繫結
將按鍵對應到自訂動作,以更快地執行。 - 多行編輯
順暢地編輯和執行多行命令。 - 動態說明顯示
直接在主控台中顯示說明資訊,而不會讓你迷失目前的位置。
使用 PSReadLine 的實際情境
情境 1:自動執行重複性工作
假設你經常重新啟動 Web 伺服器並檢查其狀態。你無需每次都輸入這些命令,可以將它們儲存在歷程記錄中,或繫結到快速鍵上。
Restart-Service -Name "WebServer"
Get-Service -Name "WebServer" | Select-Object Status
情境 2:利用預測性 IntelliSense 更快地探索命令
預測性 IntelliSense 可協助你快速尋找和執行命令。例如,如果你經常使用Get-Process,輸入「Get」時會根據你的歷程記錄建議命令,包括Get-Process.
若要啟用預測性 IntelliSense:
Set-PSReadLineOption -PredictionSource History
情境 3:自訂按鍵繫結以提高效率
你可以繫結一個按鍵,以便在命令歷程記錄中快速向後搜尋:
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
或者建立自訂繫結,將命令儲存到歷程記錄中而不執行它:
$parameters = @{
Key = 'Alt+w'
ScriptBlock = {
$line = $null
$cursor = $null
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line, [ref]$cursor)
[Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
[Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
}
}
Set-PSReadLineKeyHandler @parameters
情境 4:安全的命令歷程記錄管理
PSReadLine 會從歷程記錄檔案中篩選掉密碼和權杖等敏感資料,以保護你的安全。例如:
$password = 'MySecurePassword'
Set-Secret -Name "MySecret" -SecretValue $password
這些命令不會儲存在歷程記錄檔案中。
安裝 PSReadLine
PSReadLine 可從 PowerShell Gallery 取得。若要安裝它,請執行:
Install-Module -Name PSReadLine -AllowClobber -Force
注意:PSReadLine 需要 PowerShell 5.1 或更新版本。它適用於 Windows Terminal、Visual Studio Code 和預設的 Windows 主控台主機,但不適用於 Windows PowerShell ISE。
版本亮點
自 Windows PowerShell 5.1 中的首次發行以來,PSReadLine 已經有了顯著的發展。主要版本包括:
- v2.3.6:隨 PowerShell 7.4.7 和 7.5.0 一起發行
- v2.3.4:引入了敏感資料清理方面的改進。
- v2.2.6:增強了多行編輯和預測性 IntelliSense。
更多詳情,請參閱about_PSReadLine 發行說明.
進一步了解 PSReadLine
有關其他功能和範例,請查看官方文件: