我正在尝试查找其中没有资源的所有 Azure RM 资源组,并使用 PowerShell 删除这些资源组。使用 Portal 删除非常耗时。使用 powershell 我可以通过使用以下代码来完成。在 powershell 中是否有更好的方法来实现这一目标?
$allResourceGroups = Get-AzureRmResourceGroup
$resourceGroupsWithResources = Get-AzureRMResource | Group-Object ResourceGroupName
$allResourceGroups | % {
$r1 = $_
[bool]$hasResource = $false
$resourceGroupsWithResources | % {
if($r1.ResourceGroupName -eq $_.Name){
$hasResource = $true
}
}
if($hasResource -eq $false){
Remove-AzureRmResourceGroup -Name $r1.ResourceGroupName -Force
}
}
你可以尝试
$allResourceGroups = Get-AzureRmResourceGroup | ForEach-Object { $_.ResourceGroupName }
$resourceGroupsWithResources = Get-AzureRMResource | Group-Object ResourceGroupName | ForEach-Object { $_.Name }
$emptyResourceGroups = $allResourceGroups | Where-Object { $_ -NotIn $resourceGroupsWithResources }
$emptyResourceGroups | ForEach-Object { Remove-AzureRmResourceGroup -Name $_ -Force }
这里将它们封装为可以调用的函数
Function Get-AzureRmResourceGroupsWithNoResources {
process {
$allResourceGroups = Get-AzureRmResourceGroup | ForEach-Object { $_.ResourceGroupName }
$resourceGroupsWithResources = Get-AzureRMResource | Group-Object ResourceGroupName | ForEach-Object { $_.Name }
$emptyResourceGroups = $allResourceGroups | Where-Object { $_ -NotIn $resourceGroupsWithResources }
return $emptyResourceGroups
}
}
Function Remove-AzureRmResourceGroupsWithNoResources {
process {
Get-AzureRmResourceGroupsWithNoResources | ForEach-Object { Remove-AzureRmResourceGroup -Name $_ -Force }
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)