Amazon-Web-Services

使用 PowerShell 循環狀態結果

  • April 19, 2021

我在 PowerShell 中編寫了一個創建 aws ebs 快照的腳本,它工作正常,沒有問題,除了我無法定期獲取進度狀態以繼續腳本中的下一步。除非我沒有更新該快照 100% 完成,否則我無法繼續我的腳本中的下一步,即升級應用程序。任何幫助表示讚賞。

   Import-Module -name AWSPowerShell
   $CostIdValue = Read-Host "Please provide ID , e.g.:- 111"
   $CostId = Get-EC2Volume -profilename xyz -region us-east-2 | ? { $_.Tags.Count -gt 0 -and $_.Tags.Key -eq "CostId" -and $_.Tags.Value -eq $CostIdValue} | Select-Object -ExpandProperty VolumeId 
   $snapshot = New-EC2Snapshot -profilename xyz -region us-east-2 -VolumeId $CostId
   #$snapshotId = Get-EC2Volume -profilename xyz -region us-east-2 | ? { $_.Tags.Count -gt 0 -and $_.Tags.Key -eq "CostId" -and $_.Tags.Value -eq $CostIdValue} | Select-Object -ExpandProperty SnapshotId
   $a = $snapshot.SnapshotId
   #Write-Output $a
   New-EC2Tag -profilename xyz -region us-east-2 -Resource $a -Tag @{ Key="CostId"; Value = $CostIdValue }
   
   $i = Get-EC2Snapshot -profilename xyz -region us-east-2 | ? { $_.Tags.Count -gt 0 -and $_.Tags.Key -eq "CostId" -and $_.Tags.Value -eq "$CostIdValue"} | Select-Object -ExpandProperty State

for ($i = 1; $i -le 100; $i++ )
{
Write-Progress -Activity "Search in Progress" -Status "$i% Complete:" -PercentComplete $i;
}

所以我使用了while並檢查了連續間隔的狀態。現在腳本正在根據狀態及其狀態檢查快照。按預期完美工作。謝謝大家的加入。。

while ((Get-EC2Snapshot -profilename xyz -region $region | ? { $_.Tags.Count -gt 0 -and $_.Tags.Key -eq "CostId" -and $_.Tags.Value -eq "$CostIdValue"}).Status -ne "completed")
{
      "Snapshot for db is $CostIdValue pending ..."
       Start-Sleep -Seconds 5
   }
   
     "Snapshot for db is $CostIdValue completed ..."

引用自:https://serverfault.com/questions/1060603