Powershell 工作流程 - Get-Service 不过滤
Powershell workflow - Get-Service not filtering
我正在尝试通过 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
我不知道为什么 -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
}
}
我正在尝试通过 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
我不知道为什么 -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
}
}