【问题标题】:powershell stop service remotelypowershell远程停止服务
【发布时间】:2017-01-13 14:34:26
【问题描述】:

我必须在多台服务器上停止 SQLSERVER 服务,并同时检查状态以确保它们已停止。 现在我的代码如下所示:

$vmlist = Get-Content C:\xx.txt
foreach($VM in $VMlist)
{
    Get-Service -ComputerName $VM | Where-Object -FilterScript {$_.name -match “MSSQLSERVER”} | ForEach-Object {$_.stop()}
    Start-Sleep 5
    Get-Service -ComputerName $VM | Where-Object -FilterScript {$_.Name -like “MSSQLSERVER“} | Select-Object -Property machineName,name,Displayname,status
}

WAIT 步骤确实令人毛骨悚然,但不知道如何以其他方式进行 您能否建议一种方法我可以重写它以停止服务,等到它停止然后返回状态?

谢谢

【问题讨论】:

    标签: powershell


    【解决方案1】:

    如果您使用ServiceControllerclass 中的Stop 方法,则还有另一种方法称为WaitForStatus。 2 参数重载更安全,因为您可以指定超时,以便在服务永不停止时脚本不会挂起。

    $vmlist = Get-Content C:\xx.txt
    foreach($VM in $VMlist) {
        Get-Service -ComputerName $VM |
        ? { $_.Name -match “MSSQLSERVER” } | % {
            $_.Stop()
            $_.WaitForStatus('Stopped','00:00:05')
        } 
        Get-Service -ComputerName $VM |
        ? { $_.Name -like “MSSQLSERVER“ } | 
        Select machineName, name, Displayname, status 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-31
      • 2013-10-05
      • 1970-01-01
      相关资源
      最近更新 更多