以前書いたPowerShell の履歴に関する操作ですが、Windows 10 のWindows PowerShell ではF7による画面表示がされません。
これに関して少し見てみましょう。
目次
- 目次
- TL;DR
- Windows 10 と Windows PowerShell と PSReadline
- 従来のようにF7で実行履歴画面を出したい
- PSReadline で F7を使ってGridViewによる代替表示を行う
- Ref
TL;DR
PSReadLine を外すか、代替コマンドを使いましょう。 PowerShell Core では代替コマンド使えないのであきらめで。
Windows 10 と Windows PowerShell と PSReadline
Windows 10 でもコマンドプロンプトではF7 で実行履歴が見えます。
一方でWindows 10 の Windows PowerShell でF7で実行履歴が見えないのは、 PSReadline がデフォルトで有効になったためです。 なお、もちろん PowerShell Core (6.1) でもF7で実行履歴は表示されません。
従来のようにF7で実行履歴画面を出したい
PSReadLineモジュールを外すことで表示されます。 が、今のPowerShell でPSReadlineを外すのは副作用が大きいためちょっと悩みどころです。
Remove-Module -Name PSReadLine
これは Windows PowerShell / PowerShell Core 両方で有効です。(そりゃぁそうですね)
PSReadline で F7を使ってGridViewによる代替表示を行う
PSReadline は、特定のキー入力に対してハンドラーを登録できます。
例えば、F7 を押すと Windows PowerShell で使える Out-GridView
表示してみましょう。
この関数を Windows PowerShell で実行してから F7を押すと、実行ヒストリが最新の入力から降順にすべて表示されます。*1
なお、関数の$history | Sort-Object -Descending | Out-GridView -Title History -PassThru
を $history | Out-GridView -Title History -PassThru
にすると古い履歴から昇順になります。
好きなほうでどうぞ。
PowerShell Core は、マルチプラットフォームで表示する View に相当するコマンドレットがないのでいったんなしで。
Ref
基本的にここの通りです。
Making the Command-History Pop-Up work via F7 in Windows 10 Powershell - Stack Overflow
*1:ここ最近 Vue.js ばかりやっているのがばれる....