Powershell自定义对象:如何访问Note收集结果的属性

icn*_*vad 6 powershell custom-object pscustomobject

阅读有关自定义对象的文章:

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

我想知道为什么我得到单个条目的结果:例如$ objAverage.Name

虽然通过$ colAverages.Name没有被撤回.虽然Get-Member都显示[System.Object] NoteProperty Name

我希望在$ 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
Run Code Online (Sandbox Code Playgroud)

电源外壳:

$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
Run Code Online (Sandbox Code Playgroud)

JPB*_*anc 2

尝试 $colAverages[0].name

for ($i=0 ; $i -le $colAverages.Length ; $i++)
{
  $colAverages[$i].name
}
Run Code Online (Sandbox Code Playgroud)

或者

foreach ($a in $colAverages)
{
  $a.name
}
Run Code Online (Sandbox Code Playgroud)

- - - - - 编辑 - - - - -

PS C:\> $colAverages.GetType()

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


PS C:\> $objAverage.GetType()

IsPublic IsSerial Name                     BaseType                                                
-------- -------- ----                     --------
True     True     Oject                            
Run Code Online (Sandbox Code Playgroud)