Как определить, когда Azure remove-AzureStorageShare выполняется в PowerShell

#azure-blob-storage #azure-powershell

#azure-blob-хранилище #azure-powershell

Вопрос:

Я пытаюсь выполнить запланированную операцию, при которой я создаю общий файловый ресурс в Azure и копирую в него некоторые файлы. Прежде чем я начну это делать, я хотел бы очистить предыдущее задание, если оно не было очищено при предыдущем запуске. Для этого я нашел метод handy-dandy Remove-AzureStorageShare . Моя проблема в том, что после вызова этого метода Azure иногда требуется до 2 минут для выполнения задачи. У меня есть ожидание в PowerShell, но я не могу проверить Azure на наличие общего ресурса без создания исключения, а затем продолжить. Итак, в принципе, я хочу, чтобы выполнялись следующие операции:

1] Проверьте наличие общего ресурса в Azure, удалите, если он существует
2] Как только Azure завершит удаление, создайте его заново
3] Скопируйте мои файлы в новый общий ресурс

Вот что у меня есть, и это не работает:

 Write-Host "STEP  6 : Removing existing Azure Share...";  
# THIS NEXT LINE THROWS AN ERROR IF THE SHARE DOESN'T EXIST
If ((Get-AzureStorageShare -Name $azureShareName -Context $context) {
    Remove-AzureStorageShare 
       -Context $context 
       -Name $azureShareName 
       -Force 
       -ErrorAction SilentlyContinue | Out-Null  
}  

$removed = $false;

While(!$removed) {
    Try {
        # THIS LINE SHOULD THROW AN EXCEPTION SINCE IT'S BEING DELETED
        If ((Get-AzureStorageShare -Name $azureShareName -Context $context) -eq $null) {   
            $removed = $true;
        }
    }
    Catch
    {
        # SINCE THE EXCEPTION IS THROWN, WE WILL SLEEP FOR A FEW...
        Write-Host "STEP 6a : Waiting...still removing.";
        Start-Sleep -s 10;
    }
}
  

Когда я пытаюсь снова создать общий ресурс, я получаю следующую ошибку:

New-AzureStorageShare : The remote server returned an error: (409) Conflict. HTTP Status Code: 409 - HTTP Error Message: The specified share is being deleted. Try operation later.

Ответ №1:

Спасибо за ваш вопрос.
Я думаю, мы можем использовать этот PowerShell для проверки общего доступа в Azure:

 Write-Host "STEP  6 : Removing existing Azure Share...";  
# THIS NEXT LINE THROWS AN ERROR IF THE SHARE DOESN'T EXIST
If ((Get-AzureStorageShare -Name $azureShareName -Context $ctx)) {
Remove-AzureStorageShare `
      -Context $ctx `
      -Name $azureShareName `
      -Force `
      -ErrorAction SilentlyContinue | Out-Null  
    }      
$removed = $false;
While(!$removed) {
Try {
     # THIS LINE SHOULD THROW AN EXCEPTION SINCE IT'S BEING DELETED
    If ((Get-AzureStorageShare -Name $azureShareName -Context $ctx) -eq $null) {   
                $removed = $true;                             
        }

     else {
          Write-Host "STEP 6a : Waiting...still removing.";
          Start-Sleep -s 5;
           }
   }
Catch
                   {
            # SINCE THE EXCEPTION IS THROWN, WE WILL SLEEP FOR A FEW...
            Write-Host "STEP 6b : Waiting...still removing.";
            Start-Sleep -s 5;
        }
    }
  

Если общий ресурс, существующий в PowerShell, покажет: ожидание … все еще удаление, иначе PowerShell покажет ошибку 404:
введите описание изображения здесь

Если у вас все еще есть вопросы, добро пожаловать, чтобы опубликовать ответ здесь. Спасибо.