【发布时间】:2020-10-29 18:14:15
【问题描述】:
我正在尝试编写一个递归删除 Azure 管理组的脚本。 Azure Management Groups 最多可以有 6 个层次结构。除非先删除所有子级,否则无法删除顶级管理组。
$toplevelgroup = Get-AzManagementGroup -GroupName 'MyTopLevelGroup' -Expand -Recurse
返回一个“PSManagementGroup”对象。如果它有子管理组,您可以像这样访问它们:
$toplevelgroup.Children
返回如下内容:
Type : /providers/Microsoft.Management/managementGroups
Id : /providers/Microsoft.Management/managementGroups/2
Name : 2
DisplayName : 2
Children : 3
注意 Children : 3 实际上是因为下一级向下管理组称为 '3'。
我的脚本需要
- 根据传递的管理组名称参数获取顶级管理组对象。
- 测试有多少级别的子管理组
- 首先循环通过最低级别的管理组并将其删除,然后转到下一个父级别并删除它们并重复,直到顶级组也被删除。
我最初写的是愚蠢的,只有在有 3 级管理组时才有效,所以我正在寻找一些指针来帮助使这个脚本更健壮。
# Delete All Management Groups
$toplevelgroup = Get-AzManagementGroup -GroupName 'MyTopLevelGroup' -Expand -Recurse
$children = $toplevelgroup.Children
$grandchildren = $toplevelgroup.Children.Children
foreach ($grandchild in $grandchildren) {
Remove-AzManagementGroup -GroupName $grandchild.Name
}
foreach ($child in $children){
Remove-AzManagementGroup -GroupName $child.Name
}
Remove-AzManagementGroup -GroupName $toplevelgroup.Name
文档:
【问题讨论】:
标签: azure powershell