我在 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;
}
答案1
所以我使用了 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 ..."