将资源移动到其他订阅时发生错误时,SilentlyContinue 不起作用
SilentlyContinue does not working when error occured while moving resources to other subscription
我有订阅 A 中的资源组列表。
例如:
$list = ("RG1","RG2","RG3","RG4","RG5")
我正在一个一个地挑选资源组并将它们移动到订阅 B。
脚本几乎一直运行良好,但有时在任何资源组中,如果任何资源由于任何原因无法移动,脚本就会失败。由于我是一个一个地选择资源组,所以如果 RG2 发生错误,那么其余 3 个资源组(RG3、RG4、RG5)将不会被处理。
为了处理这个问题,我只需在我的脚本中添加 -ErrorAction SilentlyContinue,这样脚本就会继续 运行。
例如:
Move-AzResource -ResourceId $Resource.ResourceId -DestinationSubscriptionId $destinationSubscriptionID -DestinationResourceGroupName $RG -Force -ErrorAction SilentlyContinue
基本结构如下:
$list = ("RG1","RG2","RG3","RG4","RG5")
try
{
foreach($RG in $list)
{
Move-AzResource -ResourceId $Resource.ResourceId -DestinationSubscriptionId $destinationSubscriptionID -DestinationResourceGroupName $RG -Force -ErrorAction SilentlyContinue
}
}
catch
{
Write-Output "Catch Block !!!"
$_.Exception.Message
}
错误信息:
Catch Block !!!
ResourceMoveFailed : Resources '/subscriptions/b9aafef7-2451-4170-bdab-322f757f545d/resourceGroups/syncintegration/providers/Microsoft.Insights/components/syncintegration' move actions failed. The correlation Id is 'e3f823c0-a2ca-4c27-a005-13d189614a0c'
CorrelationId: c3d224fc-a1b3-4e32-840b-6c980c4af90f
预期:如果出现任何错误,那么它应该忽略错误选择下一个资源组。
如果记录错误然后继续pick其他资源组就好了。
这仍然是一些其他 azure-powershell 命令的已知问题。如果 Move-AzResource
有同样的问题,您也可以通过添加 -Verbose
来解决它:
https://github.com/Azure/azure-powershell/issues/11384
如果没有,请确保您已更新模块。您可能想尝试在上面的 link 上提出一个新问题。
另一个示例解决方法是在 Foreach
循环中捕获错误以在错误后继续:
foreach($RG in $list) {
Try { Move-AzResource -ResourceId $Resource.ResourceId -DestinationSubscriptionId $destinationSubscriptionID -DestinationResourceGroupName $RG -Force
Catch { $_.Exception.Message; Continue }
}
我有订阅 A 中的资源组列表。 例如:
$list = ("RG1","RG2","RG3","RG4","RG5")
我正在一个一个地挑选资源组并将它们移动到订阅 B。
脚本几乎一直运行良好,但有时在任何资源组中,如果任何资源由于任何原因无法移动,脚本就会失败。由于我是一个一个地选择资源组,所以如果 RG2 发生错误,那么其余 3 个资源组(RG3、RG4、RG5)将不会被处理。
为了处理这个问题,我只需在我的脚本中添加 -ErrorAction SilentlyContinue,这样脚本就会继续 运行。 例如:
Move-AzResource -ResourceId $Resource.ResourceId -DestinationSubscriptionId $destinationSubscriptionID -DestinationResourceGroupName $RG -Force -ErrorAction SilentlyContinue
基本结构如下:
$list = ("RG1","RG2","RG3","RG4","RG5")
try
{
foreach($RG in $list)
{
Move-AzResource -ResourceId $Resource.ResourceId -DestinationSubscriptionId $destinationSubscriptionID -DestinationResourceGroupName $RG -Force -ErrorAction SilentlyContinue
}
}
catch
{
Write-Output "Catch Block !!!"
$_.Exception.Message
}
错误信息:
Catch Block !!!
ResourceMoveFailed : Resources '/subscriptions/b9aafef7-2451-4170-bdab-322f757f545d/resourceGroups/syncintegration/providers/Microsoft.Insights/components/syncintegration' move actions failed. The correlation Id is 'e3f823c0-a2ca-4c27-a005-13d189614a0c'
CorrelationId: c3d224fc-a1b3-4e32-840b-6c980c4af90f
预期:如果出现任何错误,那么它应该忽略错误选择下一个资源组。 如果记录错误然后继续pick其他资源组就好了。
这仍然是一些其他 azure-powershell 命令的已知问题。如果 Move-AzResource
有同样的问题,您也可以通过添加 -Verbose
来解决它:
https://github.com/Azure/azure-powershell/issues/11384
如果没有,请确保您已更新模块。您可能想尝试在上面的 link 上提出一个新问题。
另一个示例解决方法是在 Foreach
循环中捕获错误以在错误后继续:
foreach($RG in $list) {
Try { Move-AzResource -ResourceId $Resource.ResourceId -DestinationSubscriptionId $destinationSubscriptionID -DestinationResourceGroupName $RG -Force
Catch { $_.Exception.Message; Continue }
}