Windows 11では、PowerShellを使ってさまざまなコマンドを実行できますが、その履歴が残ることを気にする方も多いでしょう。特に、機密情報を含むコマンドを実行した場合、履歴が第三者に見られる可能性があるため、適切に削除することが重要です。本記事では、PowerShellのコマンド実行履歴を確認し、安全に削除する方法を詳しく解説します。
PowerShellのコマンド履歴はどこに保存されるのか?
PowerShellのコマンド履歴は、使用するバージョンや設定によって異なる場所に保存されます。主に以下の3つの方法で記録されます。
1. PowerShellセッションの履歴(Get-History コマンド)
PowerShellのセッション中に実行したコマンドは、一時的にメモリに保存され、Get-History
コマンドで確認できます。しかし、この履歴はPowerShellを閉じると消えます。
Get-History
2. コマンドラインの履歴($env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt)
PowerShell 5.0以降では、実行したコマンドがテキストファイルに保存されます。
この履歴は、PowerShellを終了しても残るため、削除しない限り記録が保持されます。
履歴ファイルの場所:
$env:APPDATA\\Microsoft\\Windows\\PowerShell\\PSReadLine\\ConsoleHost_history.txt
3. Windowsイベントログに記録される履歴
特定の設定が有効になっている場合、PowerShellの実行履歴はWindowsイベントログにも記録されます。
これにより、管理者が過去のコマンド実行履歴を追跡できるようになります。
PowerShellのコマンド履歴を削除する方法
履歴を完全に削除するには、上記の3つの保存場所ごとに適切な方法を実行する必要があります。
1. 現在のPowerShellセッションの履歴をクリアする
PowerShellを開いている間に履歴を削除するには、以下のコマンドを実行します。
Clear-History
これにより、Get-History
コマンドで表示されるセッション内の履歴がクリアされます。
ただし、PowerShellを閉じると自動的に消えるため、手動で削除する必要はほとんどありません。
2. 履歴ファイルを削除する
PowerShellのコマンド履歴が保存されるファイルを削除するには、以下のコマンドを実行します。
Remove-Item "$env:APPDATA\\Microsoft\\Windows\\PowerShell\\PSReadLine\\ConsoleHost_history.txt"
このコマンドを実行すると、履歴ファイルが削除され、次回PowerShellを開いたときに過去の履歴が残らなくなります。
3. WindowsイベントログからPowerShellの履歴を削除する
Windowsイベントログに記録されたPowerShellのコマンド履歴を削除するには、管理者権限でPowerShellを開き、以下のコマンドを実行します。
wevtutil clear-log "Microsoft-Windows-PowerShell/Operational"
このコマンドにより、PowerShellの実行ログが記録されるイベントログがクリアされます。
ただし、管理者権限が必要なため、通常のユーザーでは削除できない点に注意してください。
履歴を自動的に削除する方法(スクリプト化)
毎回手動で履歴を削除するのが面倒な場合は、スクリプトを作成して簡単に実行できるようにしておくと便利です。
バッチファイル(.bat)を作成する方法
- メモ帳を開く
- 以下の内容をコピーして貼り付け
@echo off
powershell -Command "Clear-History"
powershell -Command "Remove-Item \\"$env:APPDATA\\Microsoft\\Windows\\PowerShell\\PSReadLine\\ConsoleHost_history.txt\\" -ErrorAction SilentlyContinue"
powershell -Command "wevtutil clear-log 'Microsoft-Windows-PowerShell/Operational'"
echo PowerShellの履歴を削除しました。
pause
- 「履歴削除.bat」 などの名前を付け、「ファイルの種類」を「すべてのファイル」に変更して保存
- 右クリックして「管理者として実行」 すれば、履歴が一括で削除される
このバッチファイルを実行するだけで、PowerShellのコマンド履歴がすべて削除されます。
履歴を残さないようにする設定方法
履歴を削除するだけでなく、最初から記録されないように設定することも可能です。
1. コマンド履歴の保存を無効化する
PowerShellの履歴保存を無効にするには、profile.ps1
に以下の設定を追加します。
Set-PSReadlineOption -HistorySaveStyle SaveNothing
この設定を適用すると、PowerShellの履歴が保存されなくなります。
profile.ps1
については以下の記事で説明していますので、ご参考に。
2. Windowsイベントログの記録を無効化する
イベントログにPowerShellの実行履歴を残さないようにするには、グループポリシーを変更する必要があります。
- 「gpedit.msc」 を開く
- [コンピューターの構成] > [管理用テンプレート] > [Windows コンポーネント] > [Windows PowerShell] に移動
- 「PowerShell のスクリプト ログ記録を有効にする」 を無効にする
この設定を変更すると、PowerShellの実行履歴がイベントログに記録されなくなります。
まとめ
Windows 11でPowerShellのコマンド履歴を削除するには、以下の3つの方法を実施する必要があります。
- セッション履歴の削除:
Clear-History
コマンドを実行 - 履歴ファイルの削除:
Remove-Item "$env:APPDATA\\Microsoft\\Windows\\PowerShell\\PSReadLine\\ConsoleHost_history.txt"
- イベントログの削除:
wevtutil clear-log "Microsoft-Windows-PowerShell/Operational"
さらに、履歴を自動削除するバッチファイルを作成したり、履歴を保存しない設定に変更したりすることで、より安全にPowerShellを使用できます。
機密情報を扱う際には、これらの方法を活用して、履歴を適切に管理しましょう。
免責規定
この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されている事が実行できない、または異なる結果をもたらす可能性があります。
また、会社所有のパソコン、スマホ、タブレットなどでは、ポリシーや権限によって実行できない場合があります。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。
最後までお読みいただきありがとうございました。
またお会いしましょう!
コメント