Powershell 我的身份赢了';t更新,并从以前的状态继续拖动
这里是我的脚本,基本上它刷新了服务,在Powershell 我的身份赢了';t更新,并从以前的状态继续拖动,powershell,scripting,powershell-remoting,Powershell,Scripting,Powershell Remoting,这里是我的脚本,基本上它刷新了服务,在启动睡眠25之后的最后一次状态检查之前,一切都正常。它一直拉它收到的第一个状态(我在这个脚本中有两个check status,它使用第一个状态,而不是重新检查) 例如,如果服务处于脱机状态,它将使用第一次检查时获取的第一个脱机状态,并在服务打开后显示该状态。有没有办法让脚本重新检查状态并显示它,而不是使用第一个 $services = "RTCRGS" $SvrName = 'CORPxxxx.xxxx.xxxx' Get-Service -Computer
启动睡眠25
之后的最后一次状态检查之前,一切都正常。它一直拉它收到的第一个状态(我在这个脚本中有两个check status,它使用第一个状态,而不是重新检查)
例如,如果服务处于脱机状态,它将使用第一次检查时获取的第一个脱机状态,并在服务打开后显示该状态。有没有办法让脚本重新检查状态并显示它,而不是使用第一个
$services = "RTCRGS"
$SvrName = 'CORPxxxx.xxxx.xxxx'
Get-Service -ComputerName $SvrName -Name $services | % {
Write-host "$($_.Name) on $SvrName is $($_.Status)"
if ($_.Status -eq 'stopped') {
Write-Host "Starting $($_.Name) in 5 sec..."
Start-Sleep 5
Write-Host "$($_.Name) is Starting, please wait..."
$_.Start()
Write-Host "Checking status of service, please wait for 25 sec..."
Start-Sleep 20
Write-Host "$($_.Name) on $SvrName is $($_.Status)"
} elseif ($_.Status -eq 'running') {
Write-Host "Restaring $($_.Name) in 5 sec..."
Start-Sleep 5
$_.Stop()
Start-Sleep 5
Write-Host "$($_.Name) is Starting, please wait..."
$_.Start()
Write-Host "Checking status of service, please wait for 25 sec..."
Start-Sleep 25
Write-Host "$($_.Name) on $SvrName is $($_.Status)"
}
}
在start sleep 20语句之后,执行新的get服务以刷新状态状态不会动态更新。它显示查询时的状态。您需要重新查询以获得更新的状态。@Ansgar Wiechers对我该如何做有何建议?当然,任何例子在运行
Get Service
时都会非常受欢迎,例如Get Service-ComputerName…|选择Object-Expand Status
您需要在任何您想要输出更新状态的地方运行它。我发现在这种情况下定义命令并在需要时调用它是最简单的:在脚本$RetrieveServiceStatus={(get service-computername$SvrName-name$\ uu.name)。Status}然后,每次需要检查If..Then..Else结构中的状态时,都可以使用Invoke命令$RetrieveServiceStatus