使用PowerShell过滤完全匹配的Windows服务

时间:2016-08-12 23:13:43

标签: powershell powershell-v2.0

我正在尝试使用PowerShell过滤掉Windows服务

以下是我们提供的Windows服务:

service_1_UAT
service_UAT
service_2_UAT
service_3_UAT
service_1_Blue_UAT

如果我服务_ * _ UAT 它提供完整的服务列表但service_UAT。但我想要以下四个:

service_1_UAT
service_UAT
service_2_UAT
service_3_UAT

如果我给service_*_Blue_UAT  它给出了正确的结果。

有什么方法可以使用PowerShell Regex过滤掉这些服务? 有人可以建议我如何过滤。

先谢谢。

1 个答案:

答案 0 :(得分:0)

看起来所有服务名称​​实际上匹配DataGenerator _ * _ UAT模式(名称如DataGenerator_1_Blue_UAT substring“1_Blue”也匹配*)。

您可以将Where-Object过滤器与regexp一起使用。假设*表示除下划线(_)以外的任何内容:

Get-Service | Where-Object { $_.Name -match "^DataGenerator_([^_]+_)?UAT$" }