鷲ノ巣

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

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

発端は PowerShellGet

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

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

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

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

続きを読む

パラメーターの検証属性について/後編

はい。ゴールデンウィークも気付けば残り1日。11連休取ったのに、半分以上を寝て過ごしてました。ご機嫌いかがでしょうか。
続き物にすると後半が書かれないブログとして定評を得てしまうのも困りますし、そろそろやる気を出しましょう。

というわけで、だいぶ間が空いてしまいましたが後半です。
前編では、パラメーターの検証属性についてまとめてみました。

後編では、Validate 系の検証属性を自作してみます。

続きを読む

パラメーターの検証属性について/前編

PowerShell では、関数のパラメーターに特定の属性をつけることで、内容に宣言的に制限をかけることができます。
宣言的にというのが重要で、つまり、パラメーターの内容をチェックするためのコードを書かなくてもよいということです。
本記事では、そうした属性についてまとめます。

続きを読む

Add-Member を極める

この記事は PowerShell Advent Calendar 2013 の 23 日目です。
昨日は @ichiohta さんの「New-Module を用いてカスタムオブジェクトを生成する」、明日は @oota_ken さんです。

いやー、一年ぶりでございます。
結局前回の記事は「前編」と銘打っておきながら、後編を書かずに終わってしまいました。
いつか整理してまとめたいものです。

さて、本日のお題は Add-Member について。
PowerShell 3.0 から、カスタムオブジェクトを組み立てるのが

[PSCustomObject] @{ x = 1; y = 2 }

といった簡易な記述で可能になったので、影が薄くなったコマンドです(昔はどう書いていたかは後述)。
かなりの長編となりますが、前後編に分けたりするとまた尻切れで終わる可能性がありますのでどうか最後までお付き合いください。

こいつの大きな謎は、MemberType パラメーターの多彩さです。
ヘルプによると、以下の値が指定できるようです(実は他にもあります)。

  • NoteProperty
  • AliasProperty
  • ScriptProperty
  • CodeProperty
  • ScriptMethod
  • CodeMethod

しかしながら、カスタムオブジェクトを組み立てるという用途では、使うのはせいぜい NoteProperty か AliasProperty くらいだったのではないでしょうか。
では、他のタイプはどのように利用するのか。
MemberType に上記の値を指定し、ValueSecondValue に適切な値を指定してやればよいのですが、その「適切な値」とは何なのか。
これが、ドキュメントもロクに無いのです。

また、このパラメーターの型は PSMemberTypes なのですが、定義されているものの中には、上記のリストにないものがあります(ParameterizedProperty とか)。
では、それらの中で MemberType パラメーターの値として使えるものと使えないものの違いは何なのか。

というわけで今回は、手探りで突き止めた MemberType 全解説ということをやってみたいと思います。

続きを読む