コマンドレットのパラメータでパイプライン入力を許可するものの中にByValueとByPropertyNameの2種類がある。
ちなみに、以下はSet-VariableコマンドレットのValueパラメータのヘルプ表示である。
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 $住所 |
ん~、結果を見るとちょっと期待と違っている。
NameはOKなのだが、Valueのほうは$objがそのまま設定されている。
これはByValueの動きだ。
もしかして、ValueパラメータのパイプラインにByPropertyNameとあるのはヘルプの誤り?
(もしくは私の理解が若干違うのかもしれない)
0 件のコメント:
コメントを投稿