適材適所

PowerShellやVBAなどプログラミング系の話多めで

【PowerShell】コマンドの入力履歴を確認する/入力履歴の保存を停止する【Get-PSReadlineOption】

日々PowerShellと戯れていますが、「なんだか、この作業、前にもやったような・・・?」

そんなときは、コマンドの入力の履歴を調べてみましょう。

環境

PowerShell5.1以降ならOK

調べ方

 
$PSVersionTable.PSVersion.ToString()

これまでのコマンド履歴を確認する

PowerShellのコマンド入力履歴はテキストファイルに残っています。

保存先のテキストファイルのパスは次のコマンドを実行することで調べることができます。

 
(Get-PSReadlineOption).HistorySavePath

ちなみにファイルの文字コードはUTF8ですので、Get-Contentコマンドレットで中身を確認するときは-Encoding utf8を忘れずに。

 
Get-Content -path (Get-PSReadlineOption).HistorySavePath -Encoding utf8

履歴から検索するときはSelect-Stringコマンドレットを使います。

 
Get-Content -path (Get-PSReadlineOption).HistorySavePath -Encoding utf8|Select-String -Pattern '検索したい言葉'

入力履歴を保存しないようにする

コマンドの入力履歴はデフォルトだと、勝手に保存される設定になっています。

現在の設定値を調べるときは次のようにします。

 
(Get-PSReadlineOption).HistorySaveStyle

デフォルトの設定だと、SaveIncrementallyになっています。

設定できる値はMicrosoft.PowerShell.HistorySaveStyle Enumになります。

SaveAtExit:1

SaveIncrementally:0

SaveNothing:2

参考 HistorySaveStyle Enum (Microsoft.PowerShell) | Microsoft Docs

 
Set-PSReadlineOption -HistorySaveStyle 2

とすることで保存しないようにできます。

保存されていてもそこまででメリットもないので、この値をで変えることはまずないとは思いますが・・・。

終わりに

PowerShellコマンドの入力履歴を確認、保存の停止をする方法でした。

この記事の検証中、あやまった操作をしたらしく、ConsoleHost_history.txtがまっさらになってしまいました。

これまでの履歴が全て消えてしまって若干不便です(´;ω;`)。

ということで皆さんには同じ轍を踏んでほしくないので、ConsoleHost_history.txtがをどうこうするのはやめた方が吉です。

ここまでお読みいただき、ありがとうございました。