【问题标题】:PowerShell check for Azure Storage Container existencePowerShell 检查 Azure 存储容器是否存在
【发布时间】:2014-06-06 23:29:28
【问题描述】:

我正在创建一个 PowerShell 脚本来执行多个步骤,其中一个涉及删除 Azure 存储容器:

Remove-AzureStorageContainer ....

下一步取决于此删除是否完成。

如何让我知道之前的 REMOVE 已成功执行,以便在下一步继续执行?

类似的东西;

while(Test-AzureStorageContainerExist "mycontainer")
{
    Start-Sleep -s 100
}
<step2>

不幸的是,“Test-AzureStorageContainerExist”似乎不可用。 :)

【问题讨论】:

  • 一种方法是尝试再次创建容器。在被删除之前,您将收到 409 conflict 回复
  • 感谢@SamHolder,但最终方法有点复杂,因为它与 HdInsight 和集群创建本身有关。总之,我无法自己创建容器,但您的容器在其他场景中是一个很好的方法。

标签: powershell azure azure-storage


【解决方案1】:

您可以请求存储容器列表并查找特定的容器,然后等到它不再返回。如果帐户中没有大量容器,这可以正常工作。如果它确实有很多容器,那么这根本就没有效率。

while (Get-AzureStorageContainer | Where-Object { $_.Name -eq "mycontainer" })
{
    Start-Sleep -s 100
    "Still there..."
}

Get-AzureStorageContainer cmdlet 还带有一个 -Name 参数,您可以执行一个循环请求返回它;但是,当容器不存在时,它会引发错误(找不到资源)而不是提供空结果,因此您可以捕获该错误并知道它已经消失(确保明确查找资源未找到与超时或类似的东西)。

更新:另一种选择是直接调用 REST API 以获取容器属性,直到收到 404(未找到)。这意味着容器已经消失了。 http://msdn.microsoft.com/en-us/library/dd179370.aspx

【讨论】:

    【解决方案2】:

    try/catch 方法:

    try {
        while($true){
            Get-AzureStorageContainer -Name "myContainer -ErrorAction stop
            sleep -s 100
        }
    } 
    catch { 
         write-host "no such container" 
         # step 2 action
    }
    

    【讨论】:

      【解决方案3】:

      这行得通

      $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
          }
      }
      

      如果您查看返回的错误消息,则异常代码是容器被删除

      【讨论】:

        猜你喜欢
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 2011-02-08
        • 2018-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        相关资源
        最近更新 更多