An Azure service that is used to provision Windows and Linux virtual machines.
[string]$subscriptionName='<Subscription_Name>'
Connect-AzAccount
Set-AzContext -Subscription $subscriptionName
$RGs=Get-AzResourceGroup
$VMInfo=@()
foreach($rg in $RGs)
{
$VMs=Get-AzVM -ResourceGroupName $rg.ResourceGroupName
$disks=Get-AzDisk -ResourceGroupName $rg.ResourceGroupName
foreach($vm in $VMs)
{
$vmObject=New-Object -TypeName Object
$vmObject | Add-Member -NotePropertyName VMName -NotePropertyValue $vm.Name
$vmObject | Add-Member -NotePropertyName RG -NotePropertyValue $vm.ResourceGroupName
$vmObject | Add-Member -NotePropertyName Subscription -NotePropertyValue $subscriptionName
$VMdisks=@()
foreach($disk in $disks)
{
if($disks.ManagedBy -like "*$($vm.Name)*")
{
$VMdisks+=$disk.Name
}
}
$VMNics=$vm.NetworkProfile.NetworkInterfaces.id -join ','
$NICTags=@()
foreach($vNIC in $VMNics)
{
$resource=Get-AzResource -ResourceId $vNIC
$NICTags+=$resource.Tags
}
$VMNICTags=$NICTags -join ','
$vmObject | Add-Member -NotePropertyName NIC -NotePropertyValue $VMNics
$vmObject | Add-Member -NotePropertyName NICTags -NotePropertyValue $VMNICTags
$vmDisks=$VMdisks -join ','
$vmObject | Add-Member -NotePropertyName DisksAttached -NotePropertyValue $vmDisks
$VMInfo+=$vmObject
}
}
$VMInfo | Export-CSV -path c:\windows\temp\VMInfo.csv