バックグラウンドジョブ
PowerShell 1.0では、1つのコマンドの実行が完了しないと次のコマンドを実行することができませんでした。また時間のかかるコマンドを実行した場合には、そのコマンドが終了するまで待つ必要がありました。
PowerShell 2.0では、バックグラウンドでコマンドを実行するためのコマンドレットが装備されました。これにより、実行したコマンドの完了を待たずに次の処理を行うことが可能です。バックグラウンドジョブはローカルコンピューターでもリモートコンピューターでも実行することができます。リモート処理用のコマンドレットには表4に示すものがあります。
コマンドレット | 説明 |
Get-Job | 現在のセッションで実行中の Windows PowerShell バックグラウンド ジョブを取得する |
Receive-Job | 現在のセッションの Windows PowerShell バックグラウンド ジョブの結果を取得する |
Remove-Job | Windows PowerShell バックグラウンド ジョブを削除する |
Start-Job | Windows PowerShell バックグラウンド ジョブを開始する |
Stop-Job | Windows PowerShell バックグラウンド ジョブを停止する |
Wait-Job | Windows PowerShell バックグランド ジョブが完了するまでコマンド プロンプトが表示されないようにする |
コマンドレットの作成
PowerShell 1.0で動作するコマンドレットを作成するには、VB.NETやC#が必要でした(過去記事参照)。PowerShell 2.0では、PowerShelスクリプトを使用してコマンドレットを作成することが可能になりました。
トランザクション処理
PowerShell 2.0ではトランザクションがサポートされました。
これにより、一連の操作を元に戻すことができます。トランザクション用のコマンドレットには表5に示すものがあります。
コマンドレット | 説明 |
Complete-Transaction | 有効なトランザクションをコミットする |
Get-Transaction | 現在アクティブなトランザクションを取得する |
Start-Transaction | トランザクションを開始する |
Undo-Transaction | 有効なトランザクションをロールバックする |
Use-Transaction | スクリプト ブロックを有効なトランザクションに追加する |
スクリプトデバッガー
PowerShell 2.0ではデバッグ専用のコマンドレットが追加されました。
これにより作成した関数やスクリプトのエラー識別、修正を容易に行うことができるようになりました。デバッグに関するコマンドレットには表6に示すものがあります。
コマンドレット | 説明 |
Set-PsBreakpoint | 行、変数、およびコマンドにブレークポイントを設定する |
Get-PsBreakpoint | 現在のセッションのブレークポイントを取得する |
Disable-PsBreakpoint | 現在のセッションのブレークポイントを無効にする |
Enable-PsBreakpoint | 現在のセッションのブレークポイントを再び有効にする |
Remove-PsBreakpoint | 現在のセッションからブレークポイントを削除する |
Get-PsCallStack | 現在のコール スタックを表示する |
Out-GridViewコマンドレット
Out-GridView
コマンドレットを使用すると、コマンドレットからの出力をグラフィカルな表に表示することができます。この表は、あらかじめ列の表示/非表示、並べ替え、フィルター、コピー&ペースト等、多くの機能を標準装備してます。
例えば、次のようにdirコマンドの実行結果をパイプを通してOut-GridViewに渡すと図1の様に表示されます。
PS> dir | Out-GridView
イベント通知
Windows PowerShell 2.0 には、イベント通知の機能が導入されました。イベント通知機能を使用すれば、「Timerイベントを使用して一定時間経過ごとに何かをさせる」「新しいプロセスが生成されたときに何かをさせる」といったことが可能になります。
イベント通知に関するコマンドには表7に示すものがあります。
コマンドレット | 説明 |
Register-ObjectEvent | Microsoft .NET Framework オブジェクトによって生成されたイベントをサブスクライブする |
Register-EngineEvent | Windows PowerShell エンジンおよび New-Event コマンドレットによって生成されたイベントにサブスクライブする |
Register-WmiEvent | Windows Management Instrumentation (WMI) イベントにサブスクライブ する |
Unregister-Event | イベント サブスクリプションをキャンセルする |
Get-Event | イベント キューからイベントを取得する |
Remove-Event | イベント キューからイベントを削除する |
Wait-Event | 特定のイベントが発生するまで待機してから、実行を継続する |
モジュール
PowerShell 1.0ではコマンドレットやPSプロバイダを追加するにはInstallUtil.exe
やAdd-PSSnapin
といったコマンドレットを使用する必要がありました。これに対しPowerShell 2.0では、複数ファイルから実行したい共通の処理、何度も使用する処理をモジュールとしてまとめることで、再利用可能な単位として管理することができます。
モジュールはあらかじめ決められたパス(%windir%\system32\WindowsPowerShell\v1.0\Modules
)の下にフォルダを作成すると、そのフォルダ名がモジュール名として扱われます。このフォルダの中に拡張子が*.psm1
というモジュールファイルを置きます。モジュールファイル自体はPowerShellスクリプトで記述しますので、習得は容易です。
まとめ
PowerShell 2.0には、非常に多くの魅力的な機能が追加されたことがお分かりいただけたでしょうか?
PowerShell 1.0を使用してきた方々は、+αの勉強でPowerShell 2.0の機能を習得することが可能です。また、これからPowerShellを習得しようと思っている方も、今からでも十分間に合います。
次回より、PowerShell2.0に追加された新機能について解説していきますので、お楽しみに。