@@ -180,49 +180,68 @@ foreach ($vm in $deallocatedVMs.Rows)
180180 $ctx = Get-AzContext
181181 }
182182 $vmObj = Get-AzVM - ResourceGroupName $resourceGroup - VMName $instanceName - Status - ErrorAction SilentlyContinue
183- if ($vmObj.PowerState -eq ' VM deallocated' )
183+ if (( $vmObj.Statuses | Where-Object { $_ .Code -like " PowerState/* " }).Code -eq " PowerState/ deallocated" )
184184 {
185185 $vmState = " Deallocated"
186- $osDiskId = $vmObj.StorageProfile.OsDisk.ManagedDisk.Id
187- $dataDiskIds = $vmObj.StorageProfile.DataDisks.ManagedDisk.Id
188- if ($osDiskId )
186+ $vmObj = Get-AzVM - ResourceGroupName $resourceGroup - VMName $instanceName
187+ if ($vmObj.StorageProfile.OsDisk.ManagedDisk.Id )
189188 {
190189 $hasManagedDisks = $true
191- $disk = Get-AzDisk - ResourceGroupName $osDiskId.Split (" /" )[4 ] - DiskName $osDiskId.Split (" /" )[8 ]
192- $osDiskSkuName = $disk.Sku.Name
193- if (-not ($Simulate ) -and $disk.Sku.Name -ne ' Standard_LRS' )
190+ $disks = @ ($vmObj.StorageProfile.OsDisk.ManagedDisk.Id )
191+ if ($vmObj.StorageProfile.DataDisks.ManagedDisk.Id )
194192 {
195- $disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku ]::new(' Standard_LRS' )
196- $disk | Update-AzDisk | Out-Null
193+ $disks = $disks + $vmObj.StorageProfile.DataDisks.ManagedDisk.Id
197194 }
198- else
195+ foreach ( $disk in $disks )
199196 {
200- Write-Output " Skipping as OS disk is already HDD."
201- }
202- foreach ($dataDiskId in $dataDiskIds )
203- {
204- $disk = Get-AzDisk - ResourceGroupName $dataDiskId.Split (" /" )[4 ] - DiskName $dataDiskId.Split (" /" )[8 ]
205- if ($dataDisksSkuNames -eq ' Unknown' )
197+ $diskObj = Get-AzDisk - ResourceGroupName $disk.Split (" /" )[4 ] - DiskName $disk.Split (" /" )[8 ]
198+ if ($diskObj.OsType )
206199 {
207- $dataDisksSkuNames = $disk .Sku.Name
200+ $osDiskSkuName = $diskObj .Sku.Name
208201 }
209202 else
210203 {
211- if ($dataDisksSkuNames -notlike " *$ ( $disk.Sku.Name ) *" )
204+ if ($dataDisksSkuNames -eq ' Unknown' )
205+ {
206+ $dataDisksSkuNames = $diskObj.Sku.Name
207+ }
208+ else
212209 {
213- $dataDisksSkuNames += " ,$ ( $disk.Sku.Name ) "
210+ if ($dataDisksSkuNames -notlike " *$ ( $diskObj.Sku.Name ) *" )
211+ {
212+ $dataDisksSkuNames += " ,$ ( $diskObj.Sku.Name ) "
213+ }
214214 }
215215 }
216-
217- if (-not ($Simulate ) -and $disk.Sku.Name -ne ' Standard_LRS' )
216+ if ($diskObj.Sku.Name -notin (' Standard_LRS' , ' StandardSSD_ZRS' ))
218217 {
219- $disk.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku ]::new(' Standard_LRS' )
220- $disk | Update-AzDisk | Out-Null
218+ if ($diskObj.Sku.Name -like " *_LRS" -and $diskObj.Sku.Name -notlike " *V2*" )
219+ {
220+ Write-Output " Downgrading $ ( $diskObj.Name ) to Standard_LRS..."
221+ if (-not ($Simulate ))
222+ {
223+ $diskObj.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku ]::new(' Standard_LRS' , ' Standard' )
224+ $diskObj | Update-AzDisk | Out-Null
225+ }
226+ }
227+ elseif ($diskObj.Sku.Name -like " *_ZRS" -and $diskObj.Sku.Name -notlike " *V2*" )
228+ {
229+ Write-Output " Downgrading $ ( $diskObj.Name ) to StandardSSD_ZRS..."
230+ if (-not ($Simulate ))
231+ {
232+ $diskObj.Sku = [Microsoft.Azure.Management.Compute.Models.DiskSku ]::new(' StandardSSD_ZRS' , ' Standard' )
233+ $diskObj | Update-AzDisk | Out-Null
234+ }
235+ }
236+ else
237+ {
238+ Write-Output " Skipping as $ ( $diskObj.Name ) disk is in an unsupported SKU ($ ( $diskObj.Sku.Name ) )..."
239+ }
221240 }
222241 else
223242 {
224- Write-Output " Skipping as Data disk is already HDD ."
225- }
243+ Write-Output " Skipping as $ ( $diskObj .Name ) disk is already in the lowest SKU ( $ ( $diskObj .Sku.Name ) ) ."
244+ }
226245 }
227246 }
228247 else
0 commit comments