2016-07-28 41 views
0

我有多个服务。假设我以A开头。当我执行在Powershell中排除几个输出

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的现有代码中添加此项。

回答

1

尝试-notin操作,您可以指定不包括数组:

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

这样的AK和AR服务将在排序列表

编辑的顶部:为V2简单和容易:

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

当运行它说:“你必须提供的右侧的值表达式“ - '运营商' – RishuA

+0

你有什么PowerShell版本? – 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中起作用。让我在第4版中测试它。 – RishuA