PowerShell 秘訣:用 PSReadLine 掌握 PowerShell Cmdlet 歷程記錄

PowerShell 是系統管理員和開發人員的強大工具,但重複性工作可能會拖慢你的速度。透過管理 Cmdlet 歷程記錄並運用PSReadLine的功能,你可以簡化工作流程、節省時間並提升生產力。本指南將帶你了解實用技巧和情境,以充分利用 PowerShell Cmdlet 歷程記錄和 PSReadLine。


為什麼管理 Cmdlet 歷程記錄很重要

想像一下反覆執行一連串複雜的命令,或對跨越多行的指令碼進行疑難排解。你無需重新輸入命令或翻找舊指令碼,只需存取 Cmdlet 歷程記錄即可快速重複使用。透過PSReadLine,你可以透過自訂體驗和啟用預測性 IntelliSense 更進一步。


存取 Cmdlet 歷程記錄

PowerShell 會自動將命令歷程記錄儲存在檔案中,方便查閱或編輯。存取方式如下:

Cmdlet 歷程記錄檔案的位置

Cmdlet 歷程記錄檔案位於:
C:\Users\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

管理 Cmdlet 歷程記錄的步驟

  1. 找到該檔案
    開啟該資料夾,找到名為ConsoleHost_history.txt.
  2. 編輯該檔案
    使用任何文字編輯器(例如記事本、VS Code)來新增、移除或修改命令。
  3. 建立捷徑
    在桌面上為該檔案建立捷徑,以便快速存取。

常見使用案例

一個典型的情境是為伺服器維護重複使用一連串命令。例如,如果你經常執行命令來重新啟動服務、檢查記錄檔或設定設定值,可以將這些命令儲存在歷程記錄檔案中以便快速存取。


釋放 PSReadLine 的全部潛力

PSReadLine 是增強 PowerShell 主控台體驗的模組。它提供語法色彩標示、預測性 IntelliSense 和自訂按鍵繫結等功能,讓使用 PowerShell 變得更加輕鬆。

PSReadLine 的主要功能

  1. 語法色彩標示
    醒目顯示語法錯誤,讓命令更易讀。
  2. 預測性 IntelliSense
    根據你的歷程記錄或外掛程式自動建議命令。
  3. 自訂按鍵繫結
    將按鍵對應到自訂動作,以更快地執行。
  4. 多行編輯
    順暢地編輯和執行多行命令。
  5. 動態說明顯示
    直接在主控台中顯示說明資訊,而不會讓你迷失目前的位置。

使用 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

有關其他功能和範例,請查看官方文件:

發表留言