2011-04-28 71 views
5

通過關於自定義對象的閱讀文章的NoteProperty:PowerShell的自定義對象:如何接取統計結果

http://technet.microsoft.com/en-us/library/ff730946.aspx

我不知道爲什麼我得到了單個條目的結果:如$ objAverage.Name

while by by $ colAverages.Name沒有任何反應。 雖然與Get-Member都顯示[System.Object] NoteProperty名稱

我希望返回$ colAverages中的結果集的所有名稱。

代碼文章: C:\ TEMP \ base.txt

Name,AtBats,Hits 
Ken Myer,43,13 
Pilar Ackerman,28,11 
Jonathan Haas,37,17 
Syed Abbas,41,20 
Luisa Cazzaniga,22,6 
Andrew Cencini,35,11 
Baris Cetinok,19,4 

PowerShell的:

$colAverages = @() 

$colStats =Import-Csv C:\Temp\base.txt 

foreach ($objBatter in $colStats) 
    { 
    $objAverage = New-Object System.Object 
    $objAverage | Add-Member -type NoteProperty -name Name -value $objBatter.Name 
    $objAverage | Add-Member -type NoteProperty -name BattingAverage -value ("{0:N3}" -f ([int] $objBatter.Hits/$objBatter.AtBats)) 
    $colAverages += $objAverage 
    } 

$colAverages | Sort-Object BattingAverage -descending 

回答

2

嘗試$ colAverages [0]。名稱

for ($i=0 ; $i -le $colAverages.Length ; $i++) 
{ 
    $colAverages[$i].name 
} 

或者

foreach ($a in $colAverages) 
{ 
    $a.name 
} 

---------- ----------編輯

PS C:\> $colAverages.GetType() 

IsPublic IsSerial Name      BaseType             
-------- -------- ----      --------             
True  True  Object[]     System.Array            


PS C:\> $objAverage.GetType() 

IsPublic IsSerial Name      BaseType             
-------- -------- ----      -------- 
True  True  Oject        
+0

OK,colAveragesis數組,$ objAverage不是。但是爲什麼產生一個Get-Member結果呢?我以爲我會看到這兩個對象之間的差異... – icnivad 2011-04-28 17:21:18

+0

好的發現它:* .GetType()顯示差異... – icnivad 2011-04-28 17:58:37

+0

難道不是最好的答案嗎? – JPBlanc 2011-04-28 18:20:02

相關問題