2016-04-04 9 views
3

Ich muss mein Azure-Konto aus allen Ressourcen leeren und es gibt zu viel, um einzeln im Portal zu entfernen. Suchen Sie nach einem Powershell-Skript, um dies zu tun. Vielen Dank.So löschen Sie alle Azure-Ressourcen mit Powershell

+0

Haben Sie etwas versucht? Kannst du etwas Code zeigen? irgendwelche Fehler usw.? –

+0

Ich bin ein kompletter PS-Anfänger, weiß nicht, wo ich anfangen soll. Muss nicht PS sein, will einfach alles weg ... – Indigo8

+0

Muss es PowerShell sein? Können Sie das Abonnement nicht über das Portal löschen? Durch das Löschen eines Abonnements werden alle Ressourcen innerhalb des Abonnements gelöscht. – trailmax

Antwort

6

Da Ressourcen in Azure in Ressourcengruppen (RG) gruppiert sind, ist dies wahrscheinlich der einfachste Weg. Verwenden Sie diese Cmdlets, um dies zu tun.

Nachdem Sie alle RGs abgerufen haben, können Sie die Ergebisse mit der | Zeichen für das Cmdlet Remove und durchlaufen Sie sie mit einer ForEach-Schleife. Probieren Sie es aus, es ist der beste Weg zu lernen, anstatt einfach nach der Lösung hier zu fragen.

Alternativ, wenn Sie keine Powershell verwenden möchten, löschen Sie einfach Ihre RGs aus dem Portal. Ich nehme an, Sie denken, dass es zu lange dauern würde, weil Sie die einzelnen Ressourcen und nicht ihre RGs betrachten, aber wenn Sie wirklich so viele RGs haben, dann ist Scripting am besten.

+0

Gibt es eine Möglichkeit zum Löschen ausgewählter Ressourcengruppen wie; Erhalte ein Array von RG-Namen und lösche sie einmal. Ich möchte nicht alle RGs löschen. Bitte, wenn es eine Möglichkeit gibt, dies zu tun, werde ich es schätzen, wenn Sie es hier zeigen können – Pianistprogrammer

+0

Ich denke, Sie wollen etwas wie: $ rgNames = "name1", "name2" foreach ($ name in $ rgNames) { Get -AzureRmResourceGroup | Wo ResourceGroupName - wie $ name }. Dies ruft alle RGs ab, deren Namen mit diesem Variablenwert beginnen. Dann können Sie dasselbe wie die Antwort tun, das Ergebnis an das Cmdlet remove übergeben, um es zu löschen. –

2
#It will delete all resources without asking any confirmation 
Login-AzureRmAccount 

$rgName = Get-AzureRmResourceGroup 

Foreach($name in $rgName) 
{ 
Write-Host $name.ResourceGroupName 
Remove-AzureRmResourceGroup -Name $name.ResourceGroupName -Verbose -Force 
} 
+0

Hey! Ich habe dein Skript benutzt, danke dafür! Bis es mit dem folgenden Fehler nicht mehr funktioniert: '' 'Remove-AzureRmResourceGroup: Kann Argument für Parameter 'Name' nicht validieren. Das Argument ist null oder leer. Geben Sie ein Argument an, das nicht null oder leer ist, und wiederholen Sie dann den Befehl erneut.''' Irgendeine Idee warum würde es aufhören zu arbeiten? – WinBoss

+0

Möglicherweise ist Ihre azurblaue Ressourcengruppe null –

2

Ein Skript wie das könnte wirklich schädlich sein ... aber auch sehr nützlich.

Ich habe ein kleines Skript erstellt und etwas Sicherheit hinzugefügt, um zu vermeiden, dass das falsche Abonnement vernichtet wird.

Das Skript fordert Sie auf, sich einzuloggen und dann alle Abonnements aufzulisten, auf die dieses Konto zugreifen kann. Sobald Sie angeben, welche, wird es alle Ressourcen nach Ressourcengruppe gruppiert. Dann, als letzte Warnung, wird es eine letzte Bestätigung benötigen, bevor alles vernichtet wird.

# Login 
Login-AzureRmAccount 

# Get a list of all Azure subscript that the user can access 
$allSubs = Get-AzureRmSubscription 

$allSubs | Sort-Object SubscriptionName | Format-Table -Property SubscriptionName, SubscriptionId, State 


$theSub = Read-Host "Enter the subscriptionId you want to clean" 

Write-Host "You select the following subscription. (it will be display 15 sec.)" -ForegroundColor Cyan 
Get-AzureRmSubscription -SubscriptionId $theSub | Select-AzureRmSubscription 

#Get all the resources groups 

$allRG = Get-AzureRmResourceGroup 


foreach ($g in $allRG){ 

    Write-Host $g.ResourceGroupName -ForegroundColor Yellow 
    Write-Host "------------------------------------------------------`n" -ForegroundColor Yellow 
    $allResources = Find-AzureRmResource -ResourceGroupNameContains $g.ResourceGroupName 

    if($allResources){ 
     $allResources | Format-Table -Property Name, ResourceName 
    } 
    else{ 
     Write-Host "-- empty--`n" 
    } 
    Write-Host "`n`n------------------------------------------------------" -ForegroundColor Yellow 
} 


$lastValidation = Read-Host "Do you wich to delete ALL the resouces previously listed? (YES/ NO)" 

if($lastValidation.ToLower().Equals("yes")){ 

    foreach ($g in $allRG){ 

     Write-Host "Deleting " $g.ResourceGroupName 
     Remove-AzureRmResourceGroup -Name $g.ResourceGroupName -Force -WhatIf 

    } 
} 
else{ 
    Write-Host "Aborded. Nothing was deleted." -ForegroundColor Cyan 
} 

Der Code ist auf GitHub: AzurePowerTools

Verwandte Themen