1

リソースを持たないすべてのAzure RMリソースグループを検索し、PowerShellを使用してそれらのリソースグループを削除しようとしています。ポータルを使用して削除するのは時間がかかります。 powershellを使用して、以下のコードを使用して達成できました。 PowerShellでこれを達成するより良い方法はありますか?リソースがないAzureリソースグループを削除する

$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 
    } 
} 

答えて

1

あなたは彼らが

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 } 
    } 
} 
呼び出すことができる機能としてパッケージ化されている。ここ

$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 } 

を試みることができます

関連する問題