17

オブジェクトの配列を調べていますが、オブジェクトをうまく表示できます。

$obj

foreach ループの各オブジェクトを正常に表示します。オブジェクト フィールドとその値にアクセスしようとしています。このコードも問題なく動作します:

$obj.psobject.properties

各オブジェクトのフィールドの名前を確認するには、次のようにします。

$obj.psobject.properties | % {$_.name}

これもうまくいきます。

これを実行してこれらのフィールドの値にアクセスしようとすると:

$obj.psobject.properties | % {$obj.$_.name}

何も返されず、表示されません。

これは、フィールドの値にアクセスできるかどうかを確認するための診断目的で行われます。主なジレンマは、特定のフィールドの値にアクセスできないことです。いえ

$obj."some field"

「何らかのフィールド」に値があることを確認したにもかかわらず、値が返されません。

これは私を困惑させました。私が間違っていることを誰かが知っていますか?

4

3 に答える 3

24

foreach 内のプロパティを反復処理すると、$_(現在のオブジェクト シンボル) を介して使用できるようになります。でプロパティの名前を出力したように$_.Name、 を使用$_.Valueすると値が出力されます。

$obj.psobject.properties | % {$_.Value}
于 2013-07-29T15:10:23.270 に答える
8

演算子の優先順位は、次のように解釈します。

($obj.$_).Name

あなたが望むので、それは何にもつながりません

$obj.($_.Name)

最初にプロパティの名前を評価し、次にアクセスし$objます。

于 2013-07-29T15:22:18.217 に答える