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