about_History

簡単な説明

コマンド履歴でコマンドを取得および実行する方法について説明します。

詳細な説明

コマンド プロンプトでコマンドを入力すると、コマンド履歴にコマンドが保存されます。 履歴のコマンドは、作業の記録として使用できます。 また、コマンド履歴からコマンドを呼び出して実行できます。

PowerShell には、組み込みの履歴と PSReadLine モジュールによって管理される履歴という 2 つの異なる履歴プロバイダーがあります。 履歴は個別に管理されますが、両方の履歴は PSReadLine読み込まれるセッションで使用できます。

PSReadLine 履歴の使用

PSReadLine 履歴は、すべての PowerShell セッションで使用されるコマンドを追跡します。 履歴は、ホストごとに中央ファイルに書き込まれます。 その履歴ファイルは、すべてのセッションで使用でき、過去のすべての履歴が含まれています。 セッションが終了しても履歴は削除されません。 また、その履歴をコマンドレットで *-History 管理することはできません。 詳細については、「about_PSReadLine」を参照してください。

組み込みのセッション履歴の使用

組み込み履歴では、現在のセッションで使用されているコマンドのみが追跡されます。 履歴は他のセッションでは使用できません。セッションが終了すると削除されます。

History コマンドレット

PowerShell には、コマンド履歴を管理する一連のコマンドレットがあります。

コマンドレット エイリアス 説明
Get-History h コマンド履歴を取得します。
Invoke-History r コマンド履歴でコマンドを実行します。
Add-History コマンド履歴にコマンドを追加します。
Clear-History clhy コマンド履歴からコマンドを削除します。

履歴を管理するためのキーボード ショートカット

PowerShell コンソールでは、次のショートカットを使用してコマンド履歴を管理できます。

  • UpArrow - 前のコマンドを表示します。
  • DownArrow - 次のコマンドを表示します。
  • F7 - コマンド履歴を表示します。
  • ESC - 履歴を非表示にします。
  • F8 - コマンドを検索します。 1 つ以上の文字を入力し、F8 キーを押します。 次のインスタンスをもう一度 F8 キーを押します。
  • F9 - 履歴 ID でコマンドを検索します。 履歴 ID を入力し、F9 キーを押します。 F7 キーを押して ID を見つけます。
  • #<string>タブ - 履歴 *<string>* を検索し、最新の一致を返します。 Tab キーを繰り返し押すと、履歴内の一致する項目が循環します。

Note

これらのキー バインドは、コンソール ホスト アプリケーションによって実装されます。 Visual Studio Code や Windows ターミナル などの他のアプリケーションには、異なるキー バインドを使用できます。 バインドは PSReadLine モジュールによってオーバーライドできます。 PowerShell セッションを開始すると、PSReadLine が自動的に読み込まれます。 PSReadLine が読み込まれると、 F7F9 はどの関数にもバインドされません。 PSReadLine には同等の機能はありません。 詳細については、「about_PSReadLine」を参照してください。

MaximumHistoryCount

基本設定変数は $MaximumHistoryCount 、PowerShell がコマンド履歴に保存するコマンドの最大数を決定します。 既定値は 4096 です。

たとえば、次のコマンドを実行すると、100 個のコマンドが $MaximumHistoryCount 下げられます。

$MaximumHistoryCount = 100

設定を適用するには、PowerShell を再起動します。

すべての PowerShell セッションの新しい変数値を保存するには、代入ステートメントを PowerShell プロファイルに追加します。 プロファイルの詳細については、「about_Profiles」を参照してください。

基本設定変数の$MaximumHistoryCount詳細については、about_Preference_Variablesを参照してください

履歴内のコマンドの順序

コマンドが入力されたときではなく、コマンドの実行が完了すると、コマンドが履歴に追加されます。 コマンドの完了に時間がかかる場合、またはコマンドが入れ子になったプロンプトで実行されている場合、コマンドが履歴内で正しく表示されない可能性があります。 入れ子になったプロンプトで実行されているコマンドは、プロンプト レベルを終了した場合にのみ完了します。

関連項目