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