В сценарии PowerShell мне бы хотелось отсортировать массив пользовательских объектов по одному полю, по убыванию, а затем по возрастанию.
Однако функция Sort-Object допускает только одну спецификацию сортировки (еслиЯ знаю).
Как сортировать, используя сложную сортировку?
В SQL я бы использовал Order by Date ASC, SomeField DESC
.Есть ли эквивалент в PowerShell?
Для иллюстрации приведем небольшое репродукцию:
$data = @(
New-Object PSObject -Property @{ SomeInt = 2 ; SomeText = "a" }
New-Object PSObject -Property @{ SomeInt = 2 ; SomeText = "b" }
New-Object PSObject -Property @{ SomeInt = 2 ; SomeText = "c" }
New-Object PSObject -Property @{ SomeInt = 3 ; SomeText = "d" }
New-Object PSObject -Property @{ SomeInt = 3 ; SomeText = "e" }
New-Object PSObject -Property @{ SomeInt = 3 ; SomeText = "f" }
New-Object PSObject -Property @{ SomeInt = 1 ; SomeText = "g" }
New-Object PSObject -Property @{ SomeInt = 1 ; SomeText = "h" }
New-Object PSObject -Property @{ SomeInt = 1 ; SomeText = "i" }
New-Object PSObject -Property @{ SomeInt = 0 ; SomeText = "j" }
New-Object PSObject -Property @{ SomeInt = 0 ; SomeText = "k" }
New-Object PSObject -Property @{ SomeInt = 0 ; SomeText = "l" }
New-Object PSObject -Property @{ SomeInt = 0 ; SomeText = "m" }
New-Object PSObject -Property @{ SomeInt = 0 ; SomeText = "n" }
)
$data | Sort -Descending SomeInt, SomeText | Select SomeInt, SomeText
Вывод:
SomeInt SomeText
------- --------
3 f
3 e
3 d
2 c
2 b
2 a
1 i
1 h
1 g
0 n
0 m
0 l
0 k
0 j
Однако я бы хотел SomeText
заказывать по возрастанию ...