我正在尝试通过Powershell工作流程并行重启Windows服务。
当我在工作流程之外使用Get-Service -DisplayName "S*"
时,我会得到预期的结果。
但是,当我在工作流程中使用相同的内容时,我会获得所有服务。似乎在工作流中忽略了-Displayname
参数。
如何在PS工作流程中获得只需要的服务?
使用脚本:
workflow Restart-Services(){
$services = Get-Service -DisplayName "S*"
Foreach -Parallel ($svc in $services){
$name = $svc.Name
Restart-Service -Name $svc -Force
}
}
Restart-Services
答案 0 :(得分:2)
我不知道为什么-Name [wildcard]
有效且-DisplayName [wildcard]
没有(在工作流程内),但如果您愿意,可以使用Where-Object
来完成过滤:
workflow Restart-Services{
$services = Get-Service |Where-Object -FilterScript {$_.DisplayName -like "S*"}
Foreach -Parallel ($svc in $services){
$name = $svc.Name
Restart-Service -Name $name
}
}