鷲ノ巣

C# とか PowerShell とか。当ブログの記事は(特に公開直後は)頻繁に改定される場合があることをご了承ください。

PowerShell コマンドを C# で書くときに便利な拡張メソッド

たまにはね、会社ブログの報告ばかりじゃなくて、自前の記事も書きましょうね。
リハビリというわけじゃないですが、軽めの記事をひとつ。

よくある話

PowerShell Cmdlet で、あるパラメーターが指定されているかどうかで処理を分けることはよくあります。
スクリプトだと $PSBoundParameters を見て判断するんですが、C# では PSCmdlet.MyInvocation.BoundParameters を使って実現できます。
ただ、この辞書にアクセスするのに、パラメーター名を文字列で指定しなければいけないというのはよろしくありません。
基本的に、リテラルは書いたら負けです。許容できても一度までです。

というわけで、こんな拡張メソッドを作っておくと、タイプミスもなくせて大変便利です。
PowerShell Cmdlet では、パラメーター名はメンバー名ですからね。

続きを読む

パイプライン処理の後始末をしよう

パイプライン対応、してますか?

軽めの記事をもう一つ。

関数内を begin - process - end の 3 つのブロックに区切って、パイプラインから配列を渡してやると、

  1. begin ブロックが 1 回実行される
  2. process ブロックが、パイプラインから渡した配列の要素数分、繰り返し実行される
  3. end ブロックが 1 回実行される

という流れになります。

続きを読む