使用Powershell更改SQL Server服务帐户
我准备了下面的脚本来更改sql server服务帐户。但当我在脚本下面运行时,服务并没有停止和启动。有什么问题吗?有没有更好的方法可以做到这一点。有没有其他的睡眠选择。我们不知道停止和启动需要多少服务。有没有办法让powershell一直等到服务完成 停止/启动使用Powershell更改SQL Server服务帐户,powershell,Powershell,我准备了下面的脚本来更改sql server服务帐户。但当我在脚本下面运行时,服务并没有停止和启动。有什么问题吗?有没有更好的方法可以做到这一点。有没有其他的睡眠选择。我们不知道停止和启动需要多少服务。有没有办法让powershell一直等到服务完成 停止/启动 $Services = Get-WmiObject Win32_Service -ComputerName "." | Where { $_.name -eq 'MSSQLSERVER' } ForEach($Service i
$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"}
}
您可以查看服务是否在循环中停止或启动,然后继续:
$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对象
$svc=gwmi win32_service -filter "name='$serviceName'"