鷲ノ巣

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 回実行される

という流れになります。

続きを読む

パッケージシステムについて考える/前編

発端は PowerShellGet

Windows Management Framework 5.0 Preview May 2014というのが出ました。
Windows Management Framework、略して WMF というのは、PowerShell を中核としつつ、WMI やら WinRM やら何やらをひとまとめにした、コンピューターを管理するためのツール群のこと。
まぁ、大雑把に言うと、PowerShell の新しいバージョンが出たと思っておいて良いです。

ちなみに、インストールして試してみたいという方は、OS の表示言語を一時的に英語にする必要があります。
インストールが終わったら日本語に戻しても大丈夫です。
まだプレビュー版ですので、壊れて困るマシンには入れないように。

さて、WMF 5.0 の、この一つ前のバージョンから、OneGet というパッケージマネージャーシステムが搭載されました。
そして、今回出た最新バージョンから、PowerShellGet という、OneGet とは別のパッケージマネージャーが搭載されています。

というわけで、にわかに増えてきたパッケージマネージャーシステムについて、ちょっと考えてみたいと思います。

続きを読む