PowerShellでは、実行したコマンドの履歴がセッション内に保存され、後から再確認したり再実行したりすることができます。しかし、セキュリティやプライバシーの観点から「履歴をクリアしたい」と思う場面もあるでしょう。そんなときに活躍するのが Clear-History
コマンドです。本記事では、Clear-History
の基本的な使い方から応用例、履歴削除の注意点まで、わかりやすく解説していきます。
Clear-Historyとは?
Clear-History
は、PowerShellのコマンド履歴を削除するためのコマンドレットです。PowerShellでは、ユーザーが実行したコマンドがセッション中に履歴として記録され、Get-History
コマンドで一覧表示できます。この履歴は、再利用や確認の際に便利ですが、ときにはこれを「消したい」シチュエーションもあるはずです。
たとえば以下のようなケースがあります。
- 機密性の高いコマンドを実行した後に履歴を消したい
- 他のユーザーと同じPCを使うため、履歴をリセットしたい
- テストやデモ環境をクリーンな状態に戻したい
こうしたニーズに応えるのが Clear-History
です。
基本的な使い方
Clear-History
を単独で実行すると、現在のPowerShellセッション内のすべてのコマンド履歴が削除されます。非常にシンプルな使い方です。
Clear-History
これで Get-History
を実行しても、履歴は何も表示されなくなります。
Get-History
出力なし
(※空の履歴)
特定の履歴だけを削除する方法
Clear-History
には、削除対象を指定するためのオプションも用意されています。
-Id パラメーターを使う
履歴にはそれぞれIDが割り当てられています。たとえば、以下のように履歴一覧を表示します。
Get-History
Id CommandLine
-- ------------
1 Get-Process
2 Get-Service
3 Get-EventLog -LogName System
この中から、特定のIDの履歴だけを削除したい場合は以下のように実行します。
Clear-History -Id 2
-CommandLine パラメーターを使う
実行されたコマンドの内容を指定して削除することも可能です。
Clear-History -CommandLine "Get-Process"
完全一致が必要なので、細かい表記ミスには注意してください。
複数の履歴を一括で削除する
複数のIDを一度に指定して削除することもできます。
Clear-History -Id 1,3
あるいは、複数のコマンドをまとめて削除することも可能です。
Clear-History -CommandLine "Get-Process","Get-Service"
一括削除することで、作業効率を高めることができます。
履歴削除の注意点
一度削除した履歴は戻せない
Clear-History
を実行すると、削除された履歴は復元できません。誤って重要なコマンド履歴を削除してしまうと、後で困ることもあります。履歴の内容をあらかじめ Export-Clixml
や Out-File
などで保存しておくのも1つの方法です。
Get-History | Export-Clixml -Path "history_backup.xml"
セッションを超えて履歴は残らない
PowerShellの履歴は、基本的には現在のセッションに紐づいています。PowerShellを終了すれば、その履歴は自動的に消えることもあるため、わざわざ消す必要がない場合もあります。ただし、PowerShell 7以降では PSReadLine
モジュールの影響で、履歴がファイルに保存されている場合もあります。
永続的な履歴ファイルもある?(PowerShell 7以降)
PowerShell 7では、PSReadLine
モジュールによって、履歴がファイルとして ~\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
に保存されるようになっています。
この履歴ファイルを手動で削除することで、過去の履歴を物理的にクリアできます。
Remove-Item "$env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt"
この操作は慎重に行いましょう。必要なら、削除前にファイルをバックアップしてください。
便利な履歴管理のテクニック
履歴をファイルに出力しておく
作業の履歴を保存しておくことで、何かトラブルがあったときの再現や学習に活かせます。
Get-History | Out-File -FilePath "my_commands.txt"
履歴から特定のキーワードを検索
Select-String
を使えば、履歴の中から特定のキーワードを簡単に探せます。
Get-History | Select-String "Service"
履歴を削除する前に、このような確認をしておくと安心です。
実行ポリシーや管理者権限について
Clear-History
は通常のユーザー権限でも利用できますが、管理者権限でPowerShellを開いている場合は、他の管理用タスクと組み合わせて使用されるケースもあります。管理者アカウントの操作履歴を定期的にクリアしておくのも、セキュリティ上のひとつの対策となるでしょう。
まとめ
PowerShellの Clear-History
コマンドは、履歴管理を行ううえで非常に便利なツールです。とくにセキュリティやプライバシーに配慮が必要な環境では、履歴の消去が大きな意味を持ちます。基本的な使い方から応用、注意点までをしっかり理解しておくことで、PowerShellの操作をより安心・安全に行うことができます。
日常的にPowerShellを使う方は、履歴の取り扱いにも気を配って、効率的かつ安全なスクリプト実行環境を整えていきましょう。