2016-07-28 3 views
0

У меня есть несколько сервисов. Предположим, что i начинается с A. Когда я исполняюСортировка в Powershell за исключением нескольких выходных

Get-Service A* - Он будет отображать услуги, как выход, начиная с А.

Я сортировкой полного вывода, кроме одного, и хочет, чтобы быть на вершине моего списка один раз отсортирован. Я использую команду ниже.

Get-Service -DisplayName A* |Sort-Object {$_.Name -ne 'AK'} 

Он перечисляет все выходные в отсортированном пути и АК находится на вершине, как ниже.

AK 
AN 
AR 
AS 

и так далее. Это удерживает AK только сверху и сортирует другие. Я хочу сделать то же самое для двух служб. AK, а затем AR (предположим). Это должно быть всегда в порядке AK и AR сверху, тогда другие сервисы должны сортироваться. Как добавить это в существующий код для AR.

ответ

1

Попробуйте -notin оператора, вы можете задать массив Исключено:

Get-Service A* | Sort-Object {$_.name -notin "AK","AR"} 

Таким образом, АК и AR сервис будет на вершине отсортированного списка

EDIT: для V2 простых и легкого :

Get-Service A* | Sort-Object {"AK","AR" -notcontains $_.name} 
+0

При запуске он говорит «Вы должны указать выражение значение на правой стороне" - «оператор» – RishuA

+0

В чем версия вашей версии powersill? – MicroScripter

+0

У меня есть v2 в некоторых машинах и v4 в некоторой машине. -ne работал над обоими для 1, чтобы исключить. – RishuA

1

Вам нужно -notin и():

'AK','AN','AR','AS' | sort {$_ -notin ('AN', 'AS')} 

Или с PS 2.0:

'AK','AN','AR','AS' | sort {[Array]::IndexOf(('AN', 'AS'), $_) -eq -1} 

или (благодаря @Mathias):

'AK','AN','AR','AS' | sort {('AN', 'AS') -notcontains $_} 
+0

Такая же проблема. Не работает . – RishuA

+0

Я добавил сценарий V2. –

+0

Отлично! Он работал в v2. Позвольте мне проверить то же самое в v 4. – RishuA

Смежные вопросы