我正在创建一个PowerShell脚本来执行几个步骤,其中一个步骤涉及删除Azure存储容器:
Remove-AzureStorageContainer ....
下一步取决于此删除工作。
如何才能知道先前的REMOVE已成功执行,以便继续执行下一步?
喜欢的东西;
while(Test-AzureStorageContainerExist "mycontainer")
{
Start-Sleep -s 100
}
<step2>
不幸的是&#39; Test-AzureStorageContainerExist&#39;似乎不可用。 :)
答案 0 :(得分:8)
您可以请求存储容器列表并查找特定存储容器列表并等待,直到不再返回。如果帐户中没有大量容器,这可以正常工作。如果它确实有很多容器,那么这根本不会有效。
while (Get-AzureStorageContainer | Where-Object { $_.Name -eq "mycontainer" })
{
Start-Sleep -s 100
"Still there..."
}
Get-AzureStorageContainer cmdlet还采用-Name参数,您可以执行循环请求返回它;但是,当容器不存在时,它会抛出错误(未找到资源)而不是提供空结果,因此您可以捕获该错误并知道它已消失(确保明确查找Reource Not found vs超时或类似的东西)。
更新:另一种选择是直接为get容器属性调用REST API,直到获得404(未找到)。这意味着容器已经消失。 http://msdn.microsoft.com/en-us/library/dd179370.aspx
答案 1 :(得分:0)
尝试/捕获方法:
try {
while($true){
Get-AzureStorageContainer -Name "myContainer -ErrorAction stop
sleep -s 100
}
}
catch {
write-host "no such container"
# step 2 action
}
答案 2 :(得分:0)
这有效
$containerDeleted = $false
while(!$containerDeleted) {
Try {
Write-Host "Try::New-AzureStorageContainer"
New-AzureStorageContainer -Name $storageContainerName -Permission Off -Context $context -Verbose -ErrorAction Stop
$containerDeleted = $true
} catch [Microsoft.WindowsAzure.Storage.StorageException] {
Start-Sleep -s 5
}
}
如果查看返回的错误消息,则异常代码是容器被删除