我们使用Powershell SDK将我们的基础架构编写为Azure中的代码。对于DEV实例,我们首先删除资源组,然后完全配置和重新部署我们的应用程序。
这样做我经常收到错误消息“无法修改此Web托管计划,因为正在进行另一项操作”。解决方法是在此命令后添加Sleep,然后希望它继续使用该脚本。
Get-AzureRmResourceGroup -Name $ResourceGroupName -ErrorVariable GetResourceGroupError -ErrorAction SilentlyContinue
if(!$GetResourceGroupError -and $PeformCleanDeployment)
{
Write-Output "Removing resources group..."
Remove-AzureRmResourceGroup -Name $ResourceGroupName -Force
do
{
Write-Output "Waiting until resource group is deleted..."
Get-AzureRmResourceGroup -Name $ResourceGroupName -ErrorVariable GetResourceGroupError -ErrorAction SilentlyContinue
Start-Sleep 30
} while (!$GetResourceGroupError)
}
但这不起作用。我仍然得到错误。
这样做的推荐方法是什么?有没有选项可以确保资源组真的消失了?
我的资源组包含一个webapp,serviceplan和一个postgres数据库。
我收到错误消息
Removing resources group...
True
Waiting until resource group is deleted...
Wait ----
Creating resources...
ResourceGroupName : ####################
Location : westeurope
ProvisioningState : Succeeded
Tags :
ResourceId : ####################
New-AzureRmAppServicePlan : Cannot modify this web hosting plan because another operation is in progress. Details: Id:
########################, OperationName: Delete, CreatedTime: 10/4/2017 8:32:32 AM, RequestId:
干杯
答案 0 :(得分:0)
这样做的推荐方法是什么?有没有办法确保 资源组真的不见了?
您可以使用Get-AzureRmResourceGroup
来确定资源组是否存在。
Get-AzureRmResourceGroup -Name $rgname -ev notPresent -ea 0
If ($notPresent)
{
Write-host "not exist"
}else
{
Write-host "exist"
}
这是我的测试结果。
根据您的方案,如果存在资源组,则需要继续等待。
更新:我修改你的脚本如下:它适用于我。
Get-AzureRmResourceGroup -Name $myResourceGroup -ErrorVariable GetResourceGroupError -ErrorAction SilentlyContinue
if(!$GetResourceGroupError)
{
Write-Output "Removing resources group..."
Remove-AzureRmResourceGroup -Name $myResourceGroup -Force
do
{
Write-Output "Waiting until resource group is deleted..."
Get-AzureRmResourceGroup -Name $myResourceGroup -ErrorVariable GetResourceGroupError -ErrorAction SilentlyContinue
"Wait ----"
Start-Sleep 5
} while (!$GetResourceGroupError)
}
您可以使用动态名称(随机名称)的另一种解决方案。