除了少量输出外,在Powershell中排序

时间:2016-07-28 10:44:31

标签: windows powershell powershell-v2.0 powershell-v3.0

我有多项服务。假设我从A开始。当我执行

Get-Service A* - 它将服务显示为以A开头的输出。

我正在排序完整的输出,除了一个,并希望它在排序后位于我的列表顶部。我正在使用以下命令。

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

以排序方式列出所有输出, AK 位于顶部如下所示。

AK
AN
AR
AS

等等。这只是将AK放在首位并对其他人进行排序。我想为2项服务做同样的事情。 AK然后AR(假设) - 这两者应始终在AK和AR顺序顶部,然后其他服务需要排序。如何在 AR 的现有代码中添加此内容。

2 个答案:

答案 0 :(得分:1)

尝试使用-notin运算符,您可以指定一个排除数组:

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

这样,AK和AR服务将位于排序列表之上

编辑:对于V2简单易行:

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

答案 1 :(得分: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 $_}