2011-04-28 4 views
5

의 NoteProperty를 ACESS 방법 :파워 쉘 사용자 정의 개체 : 사용자 정의 개체에 대한 기사를 읽고 수집 결과

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

내가 개별 항목에 대한 결과를 얻을 이유가 궁금 : 예를 들어 $ objAverage.Name

$ colAverages.Name에 의해 아무것도 returened되지 않습니다. Get-Member 모두 [System.Object] NoteProperty 이름을 표시하지만

$ 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 

파워 쉘 :

$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 
} 

또는 .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는 없습니다. 그러나 왜 Get-Member도 같은 결과를 산출합니까? 나는 두 객체 간의 차이점을 볼 것이라고 생각했다 ... – icnivad

+0

OK 발견 : * .GetType()은 차이를 보여 주었다 ... – icnivad

+0

좋은 답변이 아니 었습니까? – JPBlanc

관련 문제