これまでPowerShellをWindows専用の管理用シェルと考えていた開発者の間で、同ツールへの関心が再び高まっている。Spacebar Newsが公開した詳しい体験記は、現行のPowerShell 7系列がWindows、macOS、Linuxで実用的な自動化環境になると論じている。特に、Bashスクリプトでデータ処理、検証、あるいは多数の補助ツールが必要になり始める場合に有用だという。
この主張の中心にあるのが、PowerShellのバージョンの違いだ。古い.NET Frameworkを基盤とするWindows PowerShell 5.1は、Windows 11に引き続き同梱されているが、活発に開発が進むクロスプラットフォーム版ではなくなっている。現代の.NET上に構築されたPowerShell 7は別途インストールするもので、`pwsh` コマンドで実行する。主要なデスクトップOSの3系統すべてで無料で利用できる。
PowerShellのスクリプトは、コマンド、変数、ループ、条件分岐を組み合わせる点で、従来のシェルスクリプトに似ている。決定的な違いは、オブジェクト指向のパイプラインだ。コマンド間でテキストだけを受け渡し、別のパーサーを必要とするのではなく、PowerShellではプロパティーと型を持つ構造化オブジェクトを受け渡せる。文字列、整数、配列、ハッシュテーブル、JSON変換を標準で扱えるため、Web APIや設定の処理に適している。組み込みコマンドでは足りない場合、スクリプトから.NETの関数を呼び出すこともできる。
この言語のコマンド群には、`Set-Location` や `Remove-Item` のように動詞と名詞を組み合わせた名前が使われている。こうした名前は、なじみのあるUnixコマンドより長いが、規則的な形式によって機能を探しやすく、組み込みヘルプも利用しやすい。スクリプトの作者は `Param` ブロックで型付きの必須パラメーターを定義し、未入力の値をPowerShellに問い合わせさせ、そのパラメーターを `Get-Help` で自動的に表示させられる。同様の動作をBashで実現するには、多くの場合、独自のオプション解析や検証が必要になる。
プラットフォーム間のパスの違いにも、いくつかの対応がある。PowerShellは、対応システム全体でチルダをホームディレクトリの省略表記として認識し、自身のコマンド向けにはパスの構文を変換できる。ただしネイティブアプリケーションには、明示的に変換したパスが必要になる場合もある。開発者は任意のエディターでスクリプトを書ける一方、Visual Studio CodeではPowerShell用のツールを通じ、補完、コード内の移動、lintによる検査を利用できる。
Spacebar Newsの筆者は、ブラウザー設定プロジェクトのWindows用インストーラーを作成する際に、これらの機能を試した。スクリプトには、インストール済みブラウザーの検出、メニューの選択肢の表示、レジストリ設定のダウンロード、要求に応じた変更の取り消しが必要だった。このプロジェクトは、PowerShellが短いコマンド一覧と、より大きなアプリケーションとの中間を担う例となった。
この報告は新たなPowerShellのリリースではなく、個人による評価だが、ツールの捉え方の実用的な変化を示している。構造化データや利用者向けのパラメーターを必要とする自動化では、PowerShell 7は、開発者が日常の対話型シェルとして採用しなくても、共通のスクリプト実行環境を提供する。



