PowerShell检查Azure存储容器是否存在
我正在创建PowerShell脚本以执行几个步骤,其中一个步骤涉及Azure存储容器的删除:PowerShell检查Azure存储容器是否存在,powershell,azure,azure-storage,Powershell,Azure,Azure Storage,我正在创建PowerShell脚本以执行几个步骤,其中一个步骤涉及Azure存储容器的删除: Remove-AzureStorageContainer .... 下一步取决于此移除是否完成 如何让我知道上一次删除已成功执行,以便在下一步继续执行 有点像 while(Test-AzureStorageContainerExist "mycontainer") { Start-Sleep -s 100 } <step2> while(测试AzureStorageContain
Remove-AzureStorageContainer ....
下一步取决于此移除是否完成
如何让我知道上一次删除已成功执行,以便在下一步继续执行
有点像
while(Test-AzureStorageContainerExist "mycontainer")
{
Start-Sleep -s 100
}
<step2>
while(测试AzureStorageContainerExist“mycontainer”)
{
开始睡眠-s100
}
不幸的是,“Test AzureStorageContainerExist”似乎不可用: 您可以请求存储容器列表并查找特定的容器,然后等待该容器不再返回。如果帐户中没有大量容器,则此操作正常。如果它确实有很多容器,那么这将根本没有效率
while (Get-AzureStorageContainer | Where-Object { $_.Name -eq "mycontainer" })
{
Start-Sleep -s 100
"Still there..."
}
Get-AzureStorageContainer cmdlet还接受-Name参数,您可以循环请求返回该参数;但是,当容器不存在时,它会抛出一个错误(未找到资源),而不是提供一个空结果,因此您可以捕获该错误并知道它已消失(确保显式查找Reource not found vs超时或类似的内容)
更新:另一个选项是直接为get容器属性调用restapi,直到得到404(未找到)。那就意味着集装箱不见了 try/catch方法:
try {
while($true){
Get-AzureStorageContainer -Name "myContainer -ErrorAction stop
sleep -s 100
}
}
catch {
write-host "no such container"
# step 2 action
}
这很有效
$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
}
}
如果查看返回异常代码的错误消息,则表明正在删除容器一种方法是尝试再次创建容器。在被删除之前,您将得到一个
409冲突
responseThanks@SamHolder,但最终的方法有点复杂,因为它与HdInsight和集群创建本身有关。总之,我不能自己创建容器,但您的容器在其他场景中是一个很好的方法。