Для хранения и обработки данных в PowerShell используются массивы, в основном одномерные, реже многомерные. Одним из способов создания массивов является использование PSCustomObject.
PSCustomObject представляет из себя некий произвольный объект, а объектам в PowerShell можно присваивать различные свойства. Создать объект и наделить его свойствами можно так:
$object = New-Object PSObject -Property @{Name1 = Value1; Name2 = Value2; Name3 = Value3}
Или так (только в PowerShell 3.0 и выше):
$object = [pscustomobject]::@{Name1 = Value1; Name2 = Value2; Name3 = Value3}
Если создать простой одномерный массив, и добавить в него в качестве членов такие вот объекты, то получится что-то вроде многомерного массива.
Для примера предположим, что мы набираем сотрудников в компанию и нам необходимо составить базу кандидатов, чтобы потом иметь возможность поиска по ней. Для этого создадим массив, в качестве ключевых параметров возьмем имя (Name), возраст (Age) и рост (Height) кандидата:
$array = @()
$array += [PSCustomObject]@{Name=″Ivan″; Age=19; Height=210}
$array += [PSCustomObject]@{Name=″Mike″; Age=18; Height=170}
$array += [PSCustomObject]@{Name=″Alex″; Age=33; Height=198}
Вывести все содержимое такого массива можно командой:
$array | ft -a
Ну а при необходимости можем воспользоваться поиском. Например, отобрать имена кандидатов не старше 20 лет и выше 190 см. можно такой командой:
$array | where {$_.Age -le 20 -and $_.Height -ge 190} | select Name
Способ простой и удобный. Работает достаточно быстро и позволяет обрабатывать большие объемы данных.