復活したGUI系コマンドレット機能
PowerShell 7.0.0 Preview6で導入された新機能は、どれもエキサイティングで解説するものを選ぶのが大変だ。今回は、PowerShell 7.0.0 Preview6で導入されたGUI機能にフォーカスしたい。
Windows PowerShellにはもともとGUI系のコマンドレットが存在している。これは.NETがWPF (Windows Presentation Foundation)をサポートしているためだ。しかし、.NET CoreからはWPFのサポートが廃止された。そのため、PowerShell CoreからもGUI系のコマンドレット機能が削除されている。
だが今回、.NET Core 3.0にWPFのサポートが戻ってきた。これにより、PowerShell 7.0.0 Preview6でもいくつかのGUI系コマンドレットが再び動作するようになった。今回はこの復活した機能を紹介しよう。
Out-GridViewでテーブルをGUI表示
PowerShell Coreではデータは最終的にターミナルにテキストとして表示される。次のスクリーンショットはGet-Processコマンドレットの実行例だ。
PowerShell 7.0.0 Preview6には「Out-GridView」コマンドレットが復活している。先程のGet-ProcessコマンドレットをパイプラインでOut-GridViewへ接続してみよう。
すると、次のようなダイアログにGet-Processコマンドレットの出力したデータが表示されるようになる。このダイアログではキーワードで出力をフィルタリングしたり、列ごとにデータをソートしたりといったことができる。簡単なExcelのようなもので、これだけでも結構便利だ。
Out-GridViewコマンドレットには-PassThruというパラメータが用意されている。このパラメータを指定すると、Out-GridViewが表示するダイアログの選択結果がPowerShell側に戻ってくるようになる。
次のスクリーンショットはOut-GridView -PassThruで表示されたダイアログだ。edgeというキーワードでフィルタリングするとともに、表示されたデータを全て選択している。-PassThruパラメータを指定するとダイアログの右下に「OK」「Cancel」というボタンが表示されるようになっており、ここで「OK」を選択するとダイアログで選択肢た内容がデータとして次の処理へ流れていくようになる。
次のようにダイアログで選択した内容がターミナルに表示されたことを確認できる。
とりあえずデータを取り出して中身をチェックしたいといった場合、このOut-GridViewを使うと簡単だ。
Show-Commandでコマンドレットの使い方表示と実行
PowerShell 7.0.0 Preview6にはShow-Commandコマンドレットも復活している。
Show-Commandコマンドレットを引数なしで実行すると、次のようなダイアログが起動してくる。
中央上部にコマンドレットが列挙されており、選択することで対象となるコマンドレットのパラメータなどをチェックできる。
Show-Commandコマンドレットにコマンドレット名を指定すると、はじめからそのコマンドレットのパラメータがなどが表示される。
Show-Commandコマンドレットでは、パラメータを表示させるだけではなく、コマンドレットを実行に移すこともできる。パラメータや属性などが指定できるようになっており、ここで値を入力して右下の「Run」を選択するとコマンドレットの実行へ向けて文字列がPowerShell 7に戻ってくるようになる。
当然だが、ここでエンターキーを押せばコマンドレットが実行される。
Show-Commandをどれだけ使うかは疑問だが(使い方を調べるにはオンラインマニュアルを読んだほうがてっとり早いし、説明が掲載されているとも言えないので)、こういった使い方もできるということだ。
Get-Helpでマニュアルを表示
PowerShell 7.0.0 Preview6ではGet-Helpコマンドレットにも-ShowWindowパラメータが復活しており、ヘルプの内容をダイアログで表示させることができるようになった。Show-Commandと違ってこちらは結構使えると思う。このコマンドレットを使って、使いたいコマンドレットのヘルプをダイアログとして置いておくことができる。
コマンドレットの使い方を忘れるのはよくあることなので、こんな感じで別のダイアログとして置いておけると結構便利だ。
GUIのサポートはWindowsのみ
今回紹介してきた機能は、当然だが、WPFを使ったユーザーインタフェース機能であるため、今のところWindowsでしか動作しない。次のようにWindows 10で動作しているコマンドレットをmacOSで実行しようとしても、エラーが表示されるだけだ。
PowerShell 7におけるGUIのサポートがWindows 10以外のプラットフォームに及ぶかどうかは、今後のユーザーの反応次第だと思う。Linuxではなくてもよいかもしれないが、macOSであればmacOSのGUIで同じものが表示されると便利だなという気はする。この機能に関しては、正式リリース後にほかのプラットフォームに対してどのように展開されていくのか注目したい。