以前書いた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ばかりやっているのがばれる....