Powershell工作流程 - Get-Service不过滤

时间:2015-06-16 09:49:07

标签: powershell workflow

我正在尝试通过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

1 个答案:

答案 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
    }
}