2017-01-04 8 views
0

私はInvoke-Ping関数(ここでは:https://gallery.technet.microsoft.com/scriptcenter/Invoke-Ping-Test-in-b553242a)を使用しています。配列変数にアクセスできない

> $Info = Invoke-Ping $ComputerNames -ErrorAction SilentlyContinue 
> $Info[0..2] 

Address  : Machine1 
IPV4Address : 10.10.44.213 
IPV6Address : 
ResponseTime : 0 
STATUS  : Responding 

Address  : Machine2 
IPV4Address : 10.10.4.46 
IPV6Address : 
ResponseTime : 0 
STATUS  : Responding 

Address  : Machine3 
IPV4Address : 10.10.4.58 
IPV6Address : 
ResponseTime : 0 
STATUS  : Responding 

私は、出力マシン名に$のInfo.Addressを実行しようとするとき、私はあるに実行している問題:それはこのような出力を作成します。私は

OverloadDefinitions                       
-------------------                       
System.Object&, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Address(int) 

を取得$ Info.Addressを入力すると、私は.Addressがすでに定義されているからだと確信しているが、私はこの問題を回避し、私が必要とする実際の値を取得する方法がわからない - 私のオブジェクトの住所値。私はそれが簡単だと確信していますが、私はちょうど無知です...私の価値に到達するためのトリックは何ですか?

+1

'$情報| %Address' – PetSerAl

答えて

4

このコマンドを使用すると、これが役に立ちます。

$Info | %{$_.Address}

+0

短い、甘い、ポイントに、そして魅力のように働いた。ありがとう! – Tchotchke

+0

ようこそ。ありがとう2 –

1

これは興味深いものです。 Test-Connectionコマンドレットでバグが見つかったようです。それがInvoke-Pingがコンピュータにpingを実行するために使用するものです。

PetSerAlが正しい。 ForEachを使用して正しい出力を得ることができます。または、探しているアレイ内の項目を手動で指定することもできます。例:

#Display Address of First item 
$info[0].Address 


#Display Address of All items 
$info | Foreach {$_.Address} 
#or 
for ($i=0; $i -lt $info.Count; $i++) { $info[$i].Address } 
+2

これはバグではありません。メソッド名の後にかっこを入れるのを忘れた場合、PowerShellはメソッドを記述する 'PSMethod'オブジェクトを返します。 – PetSerAl

+0

それが本当だったら、なぜこれは機能するのですか? $ ping.status 応答する –

+1

v3の新機能([Member Enumeration](https://blogs.msdn.microsoft.com/powershell/2012/06/13/new-v3-language-features)では、 )が導入された。したがって、プロパティまたはメソッドを要求し、**コレクションオブジェクトにそのプロパティまたはメソッド**がない場合、そのプロパティまたはメソッドはコレクション要素から要求されます。 – PetSerAl

1

興味深いが、この場合に実行していないが、根本的な原因は、配列がAddressメソッドを持っているということです表示されます。

Get-Member -InputObject @()、またはコードでGet-Member -InputObject $Infoと確認できます。

どうしてですか?非常に便利ですが、配列のプロパティを解読する言語機能に依存しており、配列のプロパティ/メソッドが直接優先されます。これは、人々が答えたさまざまな回避策に頼る必要があることを意味します。

乾杯!

+0

男自身!あなたのブログとあなたが提供するPSスクリプトをありがとう!あなたの知識と分かち合いのために私がどれくらいの時間を救ったのかは分かりません! – Tchotchke

+0

メモをお寄せいただきありがとうございます。これをもたらすことに感謝し、このシナリオでは決して走ったことはありませんでした! –

関連する問題