】コマンドレットを作成するにはいくつかの手順を踏む必要がある。大まかな流れは以下のようになる。クラスライブラリとしてコマンドレットを作成する。作成したクラスライブラリをインストールする。PowerShellコンソールにスナップインとして登録する。】コマンドレットを作成するには、System.Management.Automation.dllというPowerShellのDLLを使用する。インストールすると、このDLLもインストールされるのだが、このDLLはGACにインストールされる。Studioで参照設定することはできない。GACから別のフォルダにアセンブリを移動したりコピーすることも通常はできない。SDKをインストールすれば手に入る。SDKをインストールすると、以下のフォルダにPowerShell用の各DLLが配置される。SDKをインストールせずとも、手っ取り早く取得する方法もある。PowerShellを使ってGACにインストールされているアセンブリをコピーするという方法である。通常はC:\Windows\system32\windowspowershell。SDKというフォルダが作成され、そこにPowerShell用のアセンブリが配置される。配置先のパスは全く別の場所でも構わない。SDKをダウンロード&インストールする必要がない。理由がなければこの方法で充分である。2005にて、クラスライブラリプロジェクトを新規作成し、以下の2つのDLLを参照設定に追加する。]スナップインクラスによって、インストールとスナップイン登録が可能となる。スナップインクラスは、一つのコマンドレットクラスライブラリに一つだけ用意する。(System.Management.Automation)の派生クラスとして作成する。(System.Configuration.Install)を継承している。(System.ComponentModel)を属性として付加する。その際、属性の引数にはTrueを指定する。PSSnapInクラスには以下の3つの抽象プロパティが用意されているので、これを実装する必要がある。)スナップインの名称。)スナップイン製作者の名称。)スナップインの説明文。スナップインには、コマンドレット開発テスト用のコマンドレットが含まれています。]コマンドレットはクラスとして実装する。一つのコマンドレットクラスで、一つのコマンドレットとなる。コマンドレットクラスは一つのクラスライブラリに複数作成することができる。(System.Management.Automation)の派生クラスとして作成する。(System.Management.Automation)を属性として付加する。その際、属性の引数には以下の2つを指定する必要がある。)コマンドレットの名称の動詞部分。)コマンドレットの名称の名詞部分。コマンドレットのパラメータコマンドレットのパラメータは、コマンドレットクラスのプロパティとして実装する。(System.Management.Automation)を属性として付加する。属性にはいくつかの名前付き引数が用意されているが、以下の3つは特に重要である。)コマンドレットを実行する際の必須パラメータかどうかを示す値。)パラメータの値をパイプラインから受け取ることができるかどうかを示す値。コマンドレットの処理を実装Cmdletクラスにはいくつかの仮想メソッドが用意されている。コマンドレットの処理は、この仮想メソッドをオーバーライドして実装する。主な仮想メソッドは以下の4つ。BeginProcessingメソッド事前処理を行うためのメソッド。「パイプラインで配列が渡されたためにコマンドレットが一度に複数回実行される」といった場合でも、このメソッドは最初に一度だけしか実行されない。ProcessRecordメソッド処理を行うためのメソッド。EndProcessingメソッド事後処理を行うためのメソッド。「パイプラインで配列が渡されたためにコマンドレットが一度に複数回実行される」といった場合でも、このメソッドは最後に一度だけしか実行されない。StopProcessingメソッドコマンドレットの実行中にCtrl+Cが押下された場合に実行されるメソッド。コマンドレットの実行中にCtrl+Cの押下によって処理が中断された場合、CmdletクラスのStoppingプロパティがTrueに設定される。中断されても、そのとき実行されていたメソッドは最後まで処理が行われる。Ctrl+Cによる中断が行われると、一時的にコンソールへの出力が無効となる。(よって、StopProcessingメソッド内でのコンソール出力処理は無意味。"Countに負の値を設定することはできません。(Installutil.exe)を使って、インストールする必要がある。PowerShellのインストールフォルダ内にSnapInというフォルダを作成し、そこに配置した"YokoKen.PowerShell.Test.dll"というアセンブリをインストールする場合、以下のようなコマンドになる。"\SnapIn\YokoKen.PowerShell.Test.dll");インストール後にクラスライブラリを別の場所に移動したり削除してはいけないことに注意。クラスライブラリの配置場所は上記の例とは全く別の場所でも構わない。】インストールまで完了したら、あとはコンソールへのスナップイン登録のみである。スナップイン登録は、Add-PSSnapinコマンドレットのnameパラメータにスナップインの名前を指定して実行するだけでできる。スナップインの名前とは、スナップインクラスに実装したNameプロパティが返す値である。実装例のコードでは、Nameプロパティが"YokoKen.PowerShell.Test"という値を返すように実装した。この場合は以下のように"YokoKen.PowerShell.Test"を指定する。"YokoKen.PowerShell.Test";これでコマンドレットが使用できるようになった。スナップイン登録は、PowerShellの起動のたびに行う必要がある。利用するという手がある。記述しておくことにより、起動時に自動で実行される。コマンドを実行すれば"HogeHogeHogeHogeHoge"って出力される。余談ですが、コマンドレットは実行ファイル形式のアセンブリでも問題なく作れたりもします。いうコマンドレットが使えます。29ブログ内検索カウンターアクセスカウンターおすすめプロフィールAuthor:よこけん性別は男です。生年月日は1984年2月頃です。社会人は2004年4月頃からやってます。C#は2004年10月頃からやってます。このブログは2006年7月頃からやってます。アプリケーションリンクopus-i商用可・加工可で、綺麗な素材を提供していらっしゃいます。紹介していらっしゃいます。中心に扱っていらっしゃいます。コマンドレットをまとめたスナップインです。クラスライブラリを作ってみました。最近の記事ブログ移転しました。返事を返せない場合があります。