復活したGUI系コマンドレット機能

PowerShell 7.0.0 Preview6で導入された新機能は、どれもエキサイティングで解説するものを選ぶのが大変だ。今回は、PowerShell 7.0.0 Preview6で導入されたGUI機能にフォーカスしたい。

PowerShell 7.0.0 Preview6

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コマンドレットの実行例だ。

Get-Processコマンドレット実行例

PowerShell 7.0.0 Preview6には「Out-GridView」コマンドレットが復活している。先程のGet-ProcessコマンドレットをパイプラインでOut-GridViewへ接続してみよう。

Get-Processの出力をOut-GridViewへ接続

すると、次のようなダイアログにGet-Processコマンドレットの出力したデータが表示されるようになる。このダイアログではキーワードで出力をフィルタリングしたり、列ごとにデータをソートしたりといったことができる。簡単なExcelのようなもので、これだけでも結構便利だ。

Out-GridViewで表示されたダイアログでGet-Processのデータを表示

Out-GridViewコマンドレットには-PassThruというパラメータが用意されている。このパラメータを指定すると、Out-GridViewが表示するダイアログの選択結果がPowerShell側に戻ってくるようになる。

Out-GridViewコマンドレットは-PassThruパラメータで通信の継続が可能

次のスクリーンショットはOut-GridView -PassThruで表示されたダイアログだ。edgeというキーワードでフィルタリングするとともに、表示されたデータを全て選択している。-PassThruパラメータを指定するとダイアログの右下に「OK」「Cancel」というボタンが表示されるようになっており、ここで「OK」を選択するとダイアログで選択肢た内容がデータとして次の処理へ流れていくようになる。

Out-GridView -PassThruで表示されたダイアログのサンプル

次のようにダイアログで選択した内容がターミナルに表示されたことを確認できる。

Out-GridViewのダイアログで選択された内容がターミナルに出力されている

とりあえずデータを取り出して中身をチェックしたいといった場合、このOut-GridViewを使うと簡単だ。

Show-Commandでコマンドレットの使い方表示と実行

PowerShell 7.0.0 Preview6にはShow-Commandコマンドレットも復活している。

PowerShell 7.0.0 Preview6にはShow-Commandコマンドレットも復活

Show-Commandコマンドレットを引数なしで実行すると、次のようなダイアログが起動してくる。

Show-Commandコマンドレットで表示されるダイアログ

中央上部にコマンドレットが列挙されており、選択することで対象となるコマンドレットのパラメータなどをチェックできる。

コマンドレットを選択したパラメータなどを表示

Show-Commandコマンドレットにコマンドレット名を指定すると、はじめからそのコマンドレットのパラメータがなどが表示される。

Show-Commandコマンドレットにコマンドレット名を指定して起動

指定されたコマンドレットのページが表示される

Show-Commandコマンドレットでは、パラメータを表示させるだけではなく、コマンドレットを実行に移すこともできる。パラメータや属性などが指定できるようになっており、ここで値を入力して右下の「Run」を選択するとコマンドレットの実行へ向けて文字列がPowerShell 7に戻ってくるようになる。

Show-Commandコマンドレットにコマンドレット名を指定して起動

属性やパラメータ、引数などを指定して「Run」を押す

Show-Commandで指定した内容がPowerShell 7のターミナルに表示されている

当然だが、ここでエンターキーを押せばコマンドレットが実行される。

Show-Commandによって生成されたコマンドレットのコマンドラインを実行

Show-Commandをどれだけ使うかは疑問だが(使い方を調べるにはオンラインマニュアルを読んだほうがてっとり早いし、説明が掲載されているとも言えないので)、こういった使い方もできるということだ。

Get-Helpでマニュアルを表示

PowerShell 7.0.0 Preview6ではGet-Helpコマンドレットにも-ShowWindowパラメータが復活しており、ヘルプの内容をダイアログで表示させることができるようになった。Show-Commandと違ってこちらは結構使えると思う。このコマンドレットを使って、使いたいコマンドレットのヘルプをダイアログとして置いておくことができる。

Get-Helpコマンドレットに-ShowWindowパラメータが戻ってきた

Get-Helpコマンドレットによって表示されたダイアログ

コマンドレットの使い方を忘れるのはよくあることなので、こんな感じで別のダイアログとして置いておけると結構便利だ。

GUIのサポートはWindowsのみ

今回紹介してきた機能は、当然だが、WPFを使ったユーザーインタフェース機能であるため、今のところWindowsでしか動作しない。次のようにWindows 10で動作しているコマンドレットをmacOSで実行しようとしても、エラーが表示されるだけだ。

GUI系機能は今のところWindowsのみ

PowerShell 7におけるGUIのサポートがWindows 10以外のプラットフォームに及ぶかどうかは、今後のユーザーの反応次第だと思う。Linuxではなくてもよいかもしれないが、macOSであればmacOSのGUIで同じものが表示されると便利だなという気はする。この機能に関しては、正式リリース後にほかのプラットフォームに対してどのように展開されていくのか注目したい。

参考資料