Azure: PowerShell to remove Virtual Machines and Cleanup

Summary
Mainly following:
Removing Azure Virtual Machines and Cleanup with PowerShell
https://medium.com/@adbertram/azure-virtual-machine-powershell-removal-e71169dd39ea

to remove a Testing Machine with PowerShell from my Ubuntu Workstation.

Only removing the Disk not work.

Used another way to delete it.


How-to
$ pwsh

PS /home/User>$vm = Get-AzVM -Name VM1 -ResourceGroupName My-Group-01

ResourceGroupName : My-Group-01
Id : /subscriptions/{...}/resour
ceGroups/My-Group-01/providers/Microsoft.Compute/virtualMachines/VM1
VmId : {...}
Name : VM1
Type : Microsoft.Compute/virtualMachines
Location : southeastasia
Tags : {}
DiagnosticsProfile : {BootDiagnostics}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
ProvisioningState : Succeeded
StorageProfile : {OsDisk, DataDisks}


PS /home/User> $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value

PS /home/User> echo $diagSa
mygroup01diag714


PS /home/User> $azResourceParams = @{
>> 'ResourceName' = 'VM1'
>> 'ResourceType' = 'Microsoft.Compute/virtualMachines'
>> 'ResourceGroupName' = 'My-Group-01'
>> }

PS /home/User> $vmResource = Get-AzResource @azResourceParams

PS /home/User> echo $vmResource

Name : VM1
ResourceGroupName : My-Group-01
ResourceType : Microsoft.Compute/virtualMachines
Location : southeastasia
ResourceId : /subscriptions/{...}/resourceGroups/My-Group-01/providers/Microsoft.Compute/virtualMachines/VM1


PS /home/User> $vmId = $vmResource.Properties.VmId

PS /home/User> echo $vmId
abc12345-1234-abcd-1234-abcdefghjklm


PS /home/User> $diagContainerName = ('bootdiagnostics-{0}-{1}' -f $vm.Name.ToLower().Substring(0, $i), $vmId)

PS /home/User> echo $diagContainerName
bootdiagnostics-vm1-abc12345-1234-abcd-1234-abcdefghjklm


PS /home/User> $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName

PS /home/User> echo $diagSaRg
My-Group-01


PS /home/User> $saParams = @{
>> 'ResourceGroupName' = $diagSaRg
>> 'Name' = $diagSa
>> }

PS /home/User> echo $saParams

Name Value
---- -----
Name mygroup01diag714
ResourceGroupName My-Group-01



PS /home/User> Get-AzStorageAccount @saParams | Get-AzStorageContainer | where {$_.Name -eq $diagContainerName} | Remove-AzStorageContainer -Force


PS /home/User> $null = $vm | Remove-AzVM -Force


PS /home/User> foreach($nicUri in $vm.NetworkProfile.NetworkInterces.Id) {
>> $nic = Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $nicUri.Split('/')[-1]
>> Remove-AzNetworkInterface -Name $nic.Name -ResourceGroupName $vm.ResourceGroupName -Force
>> foreach($ipConfig in $nic.IpConfigurations) {
>> if($ipConfig.PublicIpAddress -ne $null) {
>> Remove-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName -Name $ipConfig.PublicIpAddress.Id.Split('/')[-1] -Force
>> }
>> }
>> }


PS /home/User> $osDiskUri = $vm.StorageProfile.OSDisk.Vhd.Uri
PS /home/User> echo $osDiskUri
PS /home/User> $vm.StorageProfile

-------------- ------ ---------
Microsoft.Azure.Management.Compute.Models.OSDisk {}


PS /home/User> Get-AzDisk -ReouceGroupName My-Group-01
PS /home/User> Remove-AzDisk -ResourceGroupName My-Group-01 -DiskName vm1-osdisk-1234MMDD-SSSSS -Force



Appendix: Enable-AzureRmAlias : Could not find a part of the path
Enable-AzureRmAlias : Could not find a part of the path '/home/User/.config/powershell/profile.ps1'.

PS /home/User> Test-Path $profile
False

PS /home/User> New-Item -ItemType File -PAth $profile -Force

PS /home/User> Enable-AzureRmAlias -Scope CurrentUser



References
Removing Azure Virtual Machines and Cleanup with PowerShell
https://medium.com/@adbertram/azure-virtual-machine-powershell-removal-e71169dd39ea

Installing PowerShell Core on Linux
https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux

Install the Azure PowerShell module
https://docs.microsoft.com/en-us/powershell/azure/install-az-ps



Update