PowerShell 2は長い間開発が進められてきた。最初のテクニカルプレビューは2年も前だ。ここではそれ以後に追加された数々の機能を見てみよう。
- リモーティング:コマンドレットやスクリプトはリモートマシン上で実行可能である。
- バックグラウンドジョブ:PsJobを使ってローカル、リモート両方でバックグラウンドジョブを開始できる。
- スクリプトコマンドレット:以前のコマンドレットはC#やVBのような静的コンパイル言語で記述する必要があったが、PowerShellスクリプトとして書けるようになった。
- ステッパブルパイプライン:パイプラインは一度に1つのアイテムに渡される要素をオブジェクトのように扱うことができる。
- データセレクション:スクリプトに必要なデータをロジック自体から分離することができる。スクリプトの国際化にも使える。
- スクリプトのデバッグ:“行、列、関数、変数、コマンド”にブレークポイントをセットできる。
- “splat”演算子:@演算子により1つの引数としてキー・バリューペアのコレクションを渡すことができる。
- PowerShell ISE:“Integrated Scripting Environment”は3つのペーンを持った軽量IDEである。上部ペーンではスクリプトを編集できる。下部ペーンでは通常のPowerShellプロンプトと同じようにすぐにコマンドを実行できるが、これは実際のところ必要ない。上部ペーンもSQL Server Management Studioのように選択中のコマンドの実行をサポートしているからだ。
- Out-GridView:コンソールにデータをダンプする代わりに、ポップアップウィンドウ上のソートやフィルタリングをサポートしたグリッドにデータを送ることもできる。
- モジュール:モジュールはコマンドレットやスクリプト、プロバイダのライブラリである。これはスナップインを置き換えるものだ。インストールが必要なスナップインと違い、モジュールはユーザーフォルダ、もしくはシステムワイドフォルダにコピーするだけでよい。一旦コピーすれば、モジュールを必要とするスクリプトで直接インポートすることができる。
- イベント:WMIやCLRイベントをイベントキューに送ったり、アクションに直接バインドしたりできる。
- トランザクション:トランザクションフレームワークが用意された。ただ、今のところはレジストリプロバイダしかサポートされていない。
- エラーハンドリングブロック:Java、C#、VBに見られるtry-cache-finallyがPowerShellでも使えるようになった。
- Add-Type:これは.NET言語のコードフラグメントをコンパイルするためにCodeDOMを利用する。
PowerShell 2.0 のリリース候補版はWindows XP以降で使うことができる。