PowerShell のヒント:PSReadLine で PowerShell コマンドレットの履歴を使いこなす

PowerShell は管理者と開発者にとって強力なツールですが、繰り返しの作業は速度を低下させる可能性があります。コマンドレットの履歴を管理し、PSReadLineの機能を活用することで、ワークフローを効率化し、時間を節約して生産性を高めることができます。このガイドでは、PowerShell コマンドレットの履歴と PSReadLine を最大限に活用するための実用的なヒントとシナリオを紹介します。


コマンドレットの履歴の管理が重要な理由

複雑な一連のコマンドを繰り返し実行したり、複数行にわたるスクリプトのトラブルシューティングを行ったりすることを想像してみてください。コマンドを再入力したり、古いスクリプトを探したりする代わりに、コマンドレットの履歴にアクセスしてすばやく再利用できます。PSReadLineを使えば、エクスペリエンスをカスタマイズし、予測 IntelliSense を有効にすることで、さらに一歩進むことができます。


コマンドレットの履歴へのアクセス

PowerShell はコマンドの履歴をファイルに自動的に保存するため、参照や編集が簡単です。アクセス方法は次のとおりです。

コマンドレット履歴ファイルの場所

コマンドレットの履歴ファイルは次の場所にあります。
C:\Users\%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine

コマンドレットの履歴を管理する手順

  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 ギャラリーから入手できます。インストールするには、次のコマンドを実行します。

Install-Module -Name PSReadLine -AllowClobber -Force

注:PSReadLine には PowerShell 5.1 以降が必要です。Windows Terminal、Visual Studio Code、および既定の Windows コンソール ホストで動作しますが、Windows PowerShell ISE では動作しません。


バージョンのハイライト

PSReadLine は、Windows PowerShell 5.1 での初回リリース以降、大幅に進化してきました。主なバージョンは次のとおりです。

  • v2.3.6:PowerShell 7.4.7 および 7.5.0 に同梱
  • v2.3.4:機密データのスクラビングの改善が導入されました。
  • v2.2.6:複数行編集と予測 IntelliSense が強化されました。

詳しくは、about_PSReadLine リリース ノート.


PSReadLine の詳細

その他の機能と例については、公式ドキュメントを参照してください。

コメントを残す