#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:
Если у вас все еще есть вопросы, добро пожаловать, чтобы опубликовать ответ здесь. Спасибо.