2011-04-28 10 views
5

कस्टम वस्तुओं के बारे में एक लेख के माध्यम से पढ़ना के NoteProperty तक पहुंचने के लिए:Powershell कस्टम वस्तुओं: एकत्र परिणाम

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

मुझे आश्चर्य है कि क्यों मैं व्यक्तिगत प्रवेश के लिए एक परिणाम मिलता है: उदाहरण के लिए $ objAverage.Name

जबकि $ colAverages द्वारा। कुछ भी पुनः प्राप्त नहीं किया गया है। हालांकि गेट-सदस्य दोनों के साथ [System.Object] नोटप्रॉपर्टी नाम

दिखाता है कि मैं अपने परिणामों के सभी नाम $ colAverages में वापस करने की अपेक्षा करता हूं।

लेख के कोड: C: \ अस्थायी \ 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] .name

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

ठीक है, colAveragesis किसी सरणी, $ objAverage नहीं है। लेकिन एक गेट-सदस्य का परिणाम क्यों उत्पन्न होता है? मैंने सोचा कि मैं दो वस्तुओं को betwen एक अंतर देखेंगे ... – icnivad

+0

ठीक है इसे मिला: * .GetType() अंतर दिखाता है ... – icnivad

+0

क्या यह अच्छा जवाब नहीं था? – JPBlanc