SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PowerShell 2.0の新機能

PowerShell 2.0の新機能(1)
――ファーストインプレッション

PowerShell 2.0の概要

  • X ポスト
  • このエントリーをはてなブックマークに追加

バックグラウンドジョブ

 PowerShell 1.0では、1つのコマンドの実行が完了しないと次のコマンドを実行することができませんでした。また時間のかかるコマンドを実行した場合には、そのコマンドが終了するまで待つ必要がありました。

 PowerShell 2.0では、バックグラウンドでコマンドを実行するためのコマンドレットが装備されました。これにより、実行したコマンドの完了を待たずに次の処理を行うことが可能です。バックグラウンドジョブはローカルコンピューターでもリモートコンピューターでも実行することができます。リモート処理用のコマンドレットには表4に示すものがあります。

表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に示すものがあります。

表5 トランザクション用コマンドレット
コマンドレット 説明
Complete-Transaction 有効なトランザクションをコミットする
Get-Transaction 現在アクティブなトランザクションを取得する
Start-Transaction トランザクションを開始する
Undo-Transaction 有効なトランザクションをロールバックする
Use-Transaction スクリプト ブロックを有効なトランザクションに追加する

スクリプトデバッガー

 PowerShell 2.0ではデバッグ専用のコマンドレットが追加されました。
これにより作成した関数やスクリプトのエラー識別、修正を容易に行うことができるようになりました。デバッグに関するコマンドレットには表6に示すものがあります。

表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
図1 イベント通知用コマンドレット
図1 イベント通知用コマンドレット

イベント通知

  Windows PowerShell 2.0 には、イベント通知の機能が導入されました。イベント通知機能を使用すれば、「Timerイベントを使用して一定時間経過ごとに何かをさせる」「新しいプロセスが生成されたときに何かをさせる」といったことが可能になります。

 イベント通知に関するコマンドには表7に示すものがあります。

表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.exeAdd-PSSnapinといったコマンドレットを使用する必要がありました。これに対しPowerShell 2.0では、複数ファイルから実行したい共通の処理、何度も使用する処理をモジュールとしてまとめることで、再利用可能な単位として管理することができます。

 モジュールはあらかじめ決められたパス(%windir%\system32\WindowsPowerShell\v1.0\Modules)の下にフォルダを作成すると、そのフォルダ名がモジュール名として扱われます。このフォルダの中に拡張子が*.psm1というモジュールファイルを置きます。モジュールファイル自体はPowerShellスクリプトで記述しますので、習得は容易です。

まとめ

 PowerShell 2.0には、非常に多くの魅力的な機能が追加されたことがお分かりいただけたでしょうか?

 PowerShell 1.0を使用してきた方々は、+αの勉強でPowerShell 2.0の機能を習得することが可能です。また、これからPowerShellを習得しようと思っている方も、今からでも十分間に合います。

 次回より、PowerShell2.0に追加された新機能について解説していきますので、お楽しみに。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PowerShell 2.0の新機能連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4624 2009/12/08 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング