2011年1月5日水曜日

◆パイプライン入力(ByPropertyName)

コマンドレットのパラメータでパイプライン入力を許可するものの中にByValueとByPropertyNameの2種類がある。
ちなみに、以下はSet-VariableコマンドレットのValueパラメータのヘルプ表示である。20110105162227

ByValueというのは通常のパターン。
”test” | Set-Variable  var
とやると$varという変数に”test”という値が設定される。

ByPropertyNameというのはパイプライン入力オブジェクトのプロパティ名とSet-Variableのパラメータを名前でマッピングしてくれるものだ。
例えば、Set-VariabaleコマンドレットのNameとValueというパラメータはパイプライン入力オブジェクトにNameとValueというプロパティがあるとそれらが使用される。
以下のような感じだ。

001
002
003
004
005
006

$obj = New-Object PsObject | select Name,Value
$obj.Name = "住所"
$obj.Value = "神奈川県川崎市"
$obj | Set-Variable
$住所


20110112114640

ん~、結果を見るとちょっと期待と違っている。
NameはOKなのだが、Valueのほうは$objがそのまま設定されている。
これはByValueの動きだ。
もしかして、ValueパラメータのパイプラインにByPropertyNameとあるのはヘルプの誤り?
(もしくは私の理解が若干違うのかもしれない)

0 件のコメント:

コメントを投稿