00:41PowerShell関数は、通常、引数が二つで戻り値の型がvoid型であるデリゲートにしか、キャストすることができません。不便だと感じたので、PowerShell関数を任意のデリゲートにキャストするコマンドレットを作成しました。】このコマンドレットは、YokoKen.PowerShell.Utilityというスナップインに含まれています。このスナップインは以下の記事にて公開しています。]このコマンドレットには、ConvertTo-Delegateという名前が付けられています。指定したデリゲートにキャストします。指定できるデリゲートに制限はありません。]ConvertTo-Delegateコマンドレットの構文は以下のようになっています。<System.Management.Automation.ScriptBlock>デリゲートにキャストするPowerShell関数を指定します。Targetパラメータに指定できるPowerShell関数に制限はありません。PowerShell関数の戻り値が、DelegateTypeパラメータに指定したデリゲートに定義されている戻り値の型と異なる場合でも、問題なく実行できます。<System.Type>PowerShell関数をキャストするデリゲートを指定します。それ以外では例外が発生します。<System.Boolean>デリゲートオブジェクトとして実行されたPowerShell関数が、実行中に例外をスローした時、例外の情報をダイアログで通知するかどうかを指定します。falseを指定した場合は、PowerShellのホストアプリケーションから、通常通りに通知されます。規定値はfalseです。]・デリゲートオブジェクトとして呼び出されたPowerShell関数の引数デリゲートオブジェクトとして呼び出されたPowerShell関数で、引数を受け取ることができます。$Args変数から取得する以外の手段で引数を取得することはできません。以下の例では引数を取得できず、例外が発生します。デリゲートオブジェクトとして呼び出されると、$senderにはNullが入っています。System.EventHandler;$form1.Add_Click($clickHandler);[System.Windows.Forms.Application]::Run($form1);正しく動作させるには、以下のように記述します。デリゲートオブジェクトとして呼び出されても、$Argsの各要素には適切な値が入っています。System.EventHandler;$form1.Add_Click($clickHandler);[System.Windows.Forms.Application]::Run($form1);・デリゲートオブジェクトとして呼び出されたPowerShell関数の戻り値デリゲートオブジェクトとして呼び出されたPowerShell関数は、以下の条件を満たすことで、戻り値を返すことができます。PowerShell関数の戻り値が、キャストしたデリゲートに定義されている戻り値の型にキャストできること。条件を満たさない場合でも問題なく実行できますが、戻り値はNullとなります。キャストしたデリゲートに定義されている戻り値の型がVoid型の場合は、何も返しません。)例えば、以下の例では戻り値はNullとなります。ResolveEventHandlerデリゲートの戻り値の型は、System.Reflection.Assemblyクラスです。ResolveEventHandlerにキャストして呼び出されたとき、戻り値はNullとなります。$());以下の例のように、PowerShell関数の戻り値が、デリゲートに定義されている戻り値の型にキャストできる場合は、戻り値が返されます。ResolveEventHandlerにキャストして呼び出されたとき、戻り値は適切な値となります。・イベントハンドラ以下のコードは、フォームが閉じられる際に、終了確認ダイアログを表示し、「いいえ」が選択された場合に終了をキャンセルさせる例です。コード中で使用しているRun-Formコマンドレットについては、こちらの記事を参照してください。$form;・Threadクラスによるマルチスレッド以下の例のように、Threadクラスを用いることで、ThreadStartデリゲートにキャストしたPowerShell関数を別スレッド上で実行させることができます。Trueを指定してください。PowerShellが強制終了してしまいます。29ブログ内検索カウンターアクセスカウンターおすすめプロフィールAuthor:よこけん性別は男です。生年月日は1984年2月頃です。社会人は2004年4月頃からやってます。C#は2004年10月頃からやってます。このブログは2006年7月頃からやってます。アプリケーションリンクopus-i商用可・加工可で、綺麗な素材を提供していらっしゃいます。紹介していらっしゃいます。中心に扱っていらっしゃいます。コマンドレットをまとめたスナップインです。クラスライブラリを作ってみました。最近の記事ブログ移転しました。返事を返せない場合があります。