在 powershell 脚本中使用时间进行条件循环

Using time in a powershell script for conditional loop

这是我的代码:

        #make sure deployment is in running state
$deployment = Get-AzureDeployment -servicename $_serviceName -slot $_slotName
Write-Host "$_serviceName is in state $($deployment.status)"
while ($deployment.Status -ne "running")
{   
    Write-Host "wait 5 seconds before trying again" 
    Start-Sleep -s 5
    $deployment = Get-AzureDeployment -servicename $_serviceName -slot $_slotName
    Write-Host "$_serviceName is in state $($deployment.status)"        
}

我想在 while 循环中设置一个条件,如果它已经 运行 比方说 2 小时,那么它应该退出。似乎无法找到如何启动计时器并在 powershell 中保留它的记录。

在这个例子中,我所做的只是在你的 While 循环之前添加一行,它还会检查以确保在 While 循环期间还没有过去 2 个小时。

根据您希望 break 退出流程的时间,这可能是最佳选择,因为它不会在您达到整整 2 小时后立即再次开始新的循环,并且循环将重新启动。

#make sure deployment is in running state
$deployment = Get-AzureDeployment -servicename $_serviceName -slot $_slotName
Write-Host "$_serviceName is in state $($deployment.status)"
$StopWatch = [System.Diagnostics.Stopwatch]::StartNew() #new code
while (($deployment.Status -ne "running") -and ($StopWatch.Elapsed.Hours -lt 2)) #new code
{   
    Write-Host "wait 5 seconds before trying again" 
    Start-Sleep -s 5
    $deployment = Get-AzureDeployment -servicename $_serviceName -slot $_slotName
    Write-Host "$_serviceName is in state $($deployment.status)"        
}