Достаточно просто написать собственную функцию сравнения:
function compare(a,b) {
if (a.last_nom < b.last_nom)
return -1;
if (a.last_nom > b.last_nom)
return 1;
return 0;
}
objs.sort(compare);
Или встроенный (c / o Marco Demaio):
objs.sort(function(a,b) {return (a.last_nom > b.last_nom) ? 1 : ((b.last_nom > a.last_nom) ? -1 : 0);} );
PowerShell будет на самом деле рассматривать любой разделенный запятыми список как массив:
"server1","server2"
Так является дополнительным в тех случаях. Однако для ассоциативных массивов, требуется:
@{"Key"="Value";"Key2"="Value2"}
Официально, "оператор массива". Можно читать больше об этом в документации, которая установила наряду с PowerShell, или в книге как "Windows PowerShell: TFM", который я создал в соавторстве.
Оператор
Splatting Для создания массива мы создаем переменную и присваиваем массив. Массивы отмечены символ. Давайте возьмем обсуждение выше и давайте использовать массив для соединения с несколькими удаленными компьютерами:
$strComputers = @("Server1", "Server2", "Server3")<enter>
Они используются для массивов и хешей.
Учебное руководство 7 PowerShell: Накопитесь, Отзыв, и Измените Данные
В PowerShell V2, также оператор .
PS> # First use it to create a hashtable of parameters:
PS> $params = @{path = "c:\temp"; Recurse= $true}
PS> # Then use it to SPLAT the parameters - which is to say to expand a hash table
PS> # into a set of command line parameters.
PS> dir @params
PS> # That was the equivalent of:
PS> dir -Path c:\temp -Recurse:$true
Splat Можно также обернуть вывод cmdlet (или конвейер) в @()
, чтобы гарантировать, что то, что Вы возвращаете, является массивом, а не единственным объектом.
, Например, dir обычно возвращает список, но в зависимости от опций, он мог бы возвратить отдельный объект. Если Вы - планирование итерации через результаты с foreach-объектом, необходимо удостовериться, что Вы возвращаете список. Вот изобретенный пример:
$results = @( dir c:\autoexec.bat)
Еще одна вещь... пустой массив (любят инициализировать переменную) обозначен @()
.