#powershell #custom-object #pscustomobject
#powershell #пользовательский объект #pscustomobject
Вопрос:
Чтение статьи о пользовательских объектах:
http://technet.microsoft.com/en-us/library/ff730946.aspx
Интересно, почему я получаю результат для отдельной записи: например $objAverage.Name
пока с помощью $colAverages.Имя nothing перезаписывается. Хотя с помощью Get-Member оба показывают [System.Объект] Имя свойства NoteProperty
Я ожидал бы возврата всех имен моего результирующего набора в $ colAverages.
Код статьи: C:Tempbase.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:Tempbase.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
Ответ №1:
Попробуйте $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
Комментарии:
1. Хорошо, значение столбца является массивом, значение $objAverage — нет. Но почему Get-элемент выдает тот же результат? Я думал, что увижу разницу между этими двумя объектами…