Share via


Nem csatlakoztatott Azure-beli felügyelt és nem felügyelt lemezek keresése és törlése az Azure PowerShell használatával

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek ✔️ Windows rendszerű virtuális gépek Rugalmas méretezési ✔️ csoportok ✔️ Egységes méretezési csoportok

Ha töröl egy virtuális gépet az Azure-ban, alapértelmezés szerint a virtuális géphez csatlakoztatott lemezek nem törlődnek. Ez a funkció segít meggátolni az adatok elvesztését a virtuális gépek nem szándékos törlése esetén. A virtuális gép törlése után továbbra is fizetnie kell a nem csatlakoztatott lemezekért. Ez a cikk bemutatja, hogyan kereshet és törölhet nem csatlakoztatott lemezeket, és hogyan csökkentheti a szükségtelen költségeket.

Feljegyzés

A Get-AzureDisk paranccsal bármilyen lemezt lekérhet.LastOwnershipUpdateTime Ez a tulajdonság azt jelzi, hogy a lemez állapota mikor frissült utoljára. A nem csatlakoztatott lemezek esetében ez azt az időpontot jeleníti meg, amikor a lemez nincs csatlakoztatva. Ez a tulajdonság az újonnan létrehozott lemezek esetében üres, amíg az állapotuk nem változik.

Felügyelt lemezek: Nem csatlakoztatott lemezek keresése és törlése

Az alábbi szkript a ManagedBy tulajdonság értékének vizsgálatával keresi a nem gyorsítótárazott felügyelt lemezeket. Ha egy felügyelt lemez csatlakozik egy virtuális géphez, a ManagedBy tulajdonság tartalmazza a virtuális gép erőforrás-azonosítóját. Ha egy felügyelt lemez nincs csatlakoztatva, a ManagedBy tulajdonság null értékű. A szkript egy Azure-előfizetés összes felügyelt lemezét megvizsgálja. Amikor a szkript megkeres egy felügyelt lemezt, amelynek a ManagedBy tulajdonsága null értékű, a szkript megállapítja, hogy a lemez nincs csatlakoztatva.

Fontos

Először futtassa a szkriptet a deleteUnattachedDisks változó 0 értékre állításával. Ez a művelet lehetővé teszi az összes nem csatlakoztatott felügyelt lemez megkeresését és megtekintését.

Miután áttekintette az összes nem csatlakoztatott lemezt, futtassa újra a szkriptet, és állítsa a deleteUnattachedDisks változót 1-re. Ez a művelet lehetővé teszi az összes nem csatlakoztatott felügyelt lemez törlését.

# Set deleteUnattachedDisks=1 if you want to delete unattached Managed Disks
# Set deleteUnattachedDisks=0 if you want to see the Id of the unattached Managed Disks
$deleteUnattachedDisks=0
$managedDisks = Get-AzDisk
foreach ($md in $managedDisks) {
    # ManagedBy property stores the Id of the VM to which Managed Disk is attached to
    # If ManagedBy property is $null then it means that the Managed Disk is not attached to a VM
    if($md.ManagedBy -eq $null){
        if($deleteUnattachedDisks -eq 1){
            Write-Host "Deleting unattached Managed Disk with Id: $($md.Id)"
            $md | Remove-AzDisk -Force
            Write-Host "Deleted unattached Managed Disk with Id: $($md.Id) "
        }else{
            $md.Id
        }
    }
 }

Nem felügyelt lemezek: Nem csatolt lemezek keresése és törlése

A nem felügyelt lemezek olyan VHD-fájlok, amelyek lapblobokként vannak tárolva az Azure Storage-fiókokban. Az alábbi szkript nem felügyelt lemezeket (lapblobokat) keres a LeaseStatus tulajdonság értékének vizsgálatával. Ha egy nem felügyelt lemez csatlakozik egy virtuális géphez, a LeaseStatus tulajdonság Zárolva értékre van állítva. Ha egy nem felügyelt lemez nincs csatlakoztatva, a LeaseStatus tulajdonság Zárolás feloldva értékre van állítva. A szkript egy Azure-előfizetés összes Azure-tárfiókjában megvizsgálja az összes nem felügyelt lemezt. Ha a szkript egy nem felügyelt lemezt talál, amelynek a LeaseStatus tulajdonsága Zárolva értékre van állítva, a szkript megállapítja, hogy a lemez nincs csatlakoztatva.

Fontos

Először futtassa a szkriptet a deleteUnattachedVHDs változó beállításával $false. Ez a művelet lehetővé teszi az összes nem felügyelt virtuális merevlemez megkeresését és megtekintését.

Miután áttekintette az összes nem csatlakoztatott lemezt, futtassa újra a szkriptet, és állítsa a deleteUnattachedVHDs változót a következőre $true: . Ez a művelet lehetővé teszi az összes nem felügyelt virtuális merevlemez törlését.

# Set deleteUnattachedVHDs=$true if you want to delete unattached VHDs
# Set deleteUnattachedVHDs=$false if you want to see the Uri of the unattached VHDs
$deleteUnattachedVHDs=$false
$storageAccounts = Get-AzStorageAccount
foreach($storageAccount in $storageAccounts){
    $storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageAccount.ResourceGroupName -Name $storageAccount.StorageAccountName)[0].Value
    $context = New-AzStorageContext -StorageAccountName $storageAccount.StorageAccountName -StorageAccountKey $storageKey
    $containers = Get-AzStorageContainer -Context $context
    foreach($container in $containers){
        $blobs = Get-AzStorageBlob -Container $container.Name -Context $context
        #Fetch all the Page blobs with extension .vhd as only Page blobs can be attached as disk to Azure VMs
        $blobs | Where-Object {$_.BlobType -eq 'PageBlob' -and $_.Name.EndsWith('.vhd')} | ForEach-Object { 
            #If a Page blob is not attached as disk then LeaseStatus will be unlocked
            if($_.ICloudBlob.Properties.LeaseStatus -eq 'Unlocked'){
                    if($deleteUnattachedVHDs){
                        Write-Host "Deleting unattached VHD with Uri: $($_.ICloudBlob.Uri.AbsoluteUri)"
                        $_ | Remove-AzStorageBlob -Force
                        Write-Host "Deleted unattached VHD with Uri: $($_.ICloudBlob.Uri.AbsoluteUri)"
                    }
                    else{
                        $_.ICloudBlob.Uri.AbsoluteUri
                    }
            }
        }
    }
}

Következő lépések

További információ: Tárfiók törlése és Árva lemezek azonosítása a PowerShell használatával