方法调用失败,因为system.string不包含名为“ WaitForStatus”的方法

时间:2019-07-26 12:03:26

标签: powershell

我正在尝试使用PS脚本停止某些服务,但是我认为类型不正确。当脚本遍历数组时,它返回“方法调用失败,因为system.string不包含名为'WaitForStatus'的方法”。我需要确保服务已停止,然后再运行下一个脚本。

Foreach ($i in $services){
    (get-service  -ComputerName Server1 | Where {$_.name -eq "$i"}).stop()
    $i.WaitForStatus('Stopped')
}

exit $LASTEXITCODE

1 个答案:

答案 0 :(得分:0)

尽管您没有弄清楚$services的定义/定义方式,但它似乎只是服务名称列表(错误状态为system.string)。要使用WaitForStatus()方法,您需要一个实际的服务对象(即System.ServiceProcess.ServiceController)。这样的事情应该会更好:

$services |
    ForEach-Object {
        $service = Get-Service -Name $_

        $service.Stop()
        $service.WaitForStatus('Stopped')
    }