【问题标题】:SQL Server Service Account Change using Powershell使用 Powershell 更改 SQL Server 服务帐户
【发布时间】:2011-09-17 03:16:56
【问题描述】:

我准备了以下脚本来更改 sql server 服务帐户。但是当我在脚本下运行时,服务并没有停止和启动。有死吗?有没有更好的方法来做到这一点。睡眠有没有其他选择。我们不知道停止和启动服务需要多少时间。有没有办法让powershell等到服务完全 停止/开始。

$Services = Get-WmiObject Win32_Service -ComputerName "." | Where { $_.name -eq 'MSSQLSERVER' }    
ForEach($Service in $Services)    
{             
$StopStatus = $Service.StopService()
Sleep 15
If ($StopStatus.ReturnValue -eq "0")
 {write-host "$Service -> Service Stopped Successfully"} 
$ChangeStatus = $Service.change($null,$null,$null,$null,$null,$null,$ServiceAccount,$Password,$null,$null,$null)
If ($ChangeStatus.ReturnValue -eq "0")
 {write-host "$Service -> Sucessfully Changed Service Account"}
$StartStatus = $Service.StartService()
Sleep 25
If ($ChangeStatus.ReturnValue -eq "0")
{write-host "$Service -> Service Started Successfully"}
}

【问题讨论】:

    标签: powershell


    【解决方案1】:

    可以循环查看服务是否停止(或启动)然后继续:

    $sleepCounter = 1
    While((Get-Service $serviceName).status -ne "Stopped" ){
            Write-Host "Waiting for service to stop. Attempt $sleepCounter of 20"
            sleep 1
            if($sleepCounter -eq 20) { break }
            $sleepCounter++
    }
    

    此外,您可以执行以下操作来获取服务,而不是使用where-object

    $svc=gwmi win32_service -filter "name='$serviceName'"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      相关资源
      最近更新 更多