Объект PowerShell не работает должным образом
Я попытался использовать командлет sort-object для сортировки процессов по идентификаторам здесь:
Get-Process | Sort-Object -Property Id
и это работает хорошо. В любом другом примере, который я обнаружил, сортировка работает нормально, но когда я пытаюсь отсортировать сотрудников по их employeeID из Active Directory с помощью одной строки:
Get-QADUser -IncludeAllProperties -SerializeValues | ? {?_.Mail} | select employeeID | sort-object -property employeeID
Я получаю что-то вроде этого:
11 1104 1105 1185 119 12...
2 ответа
Решение
Get-QADUser возвращает eployeeId в виде строки, поэтому сортировка использует механизм сортировки строк. Чтобы отсортировать employeeIds как целые числа - просто приведите свойство к этому типу:
Get-QADUser -IncludeAllProperties | Sort-Object { [int]$_.employeeId } | select Name, employeeid
Также вы можете использовать {$_. EmployeeId -as [int]}. Это не вызывает ошибку в нуле.
Я принимаю это решение с "Frode F."