Public/Azure/Get-AzureVMReport.ps1
function Get-AzureVMReport { [CmdletBinding()] Param( [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] [Microsoft.Azure.Commands.Compute.Models.PSVirtualMachineList[]] $VM ) begin { } process { $VMArray = [System.Collections.Generic.List[PSCustomObject]]::New() foreach ($CurVM in $VM) { $VMStatus = Get-AzureRmVM -ResourceGroupName $CurVM.ResourceGroupName -Name $CurVM.name -Status foreach ($CurNIC in $NIC) { if ($CurNIC.Id -eq $CurVM.NetworkProfile.NetworkInterfaces.id) { $PrivateIP = $CurNIC.IpConfigurations.PrivateIPAddress } } $DataDisk = $CurVM.StorageProfile.DataDisks $DataDiskName = '' foreach ($CurDataDisk in $DataDisk) { $CurDataDiskName = $DataDiskName + "; " + $CurDataDisk.name $DataDiskName = $CurDataDiskName.Substring(2) } if ($CurVM.StorageProfile.OSDisk.ManagedDisk -eq $null) { $OSDiskUnManaged = $CurVM.StorageProfile.OSDisk.Vhd.Uri $OSDiskManaged = "This VM has un-managed OS Disk" } else { $OSDiskManaged = $CurVM.StorageProfile.OSDisk.ManagedDisk.Id $OSDiskUnManaged = "This VM has Managed OS Disk" } [PSCustomObject]@{ ResourceGroupName = $CurVM.ResourceGroupName VMName = $CurVM.Name VMStatus = $VMStatus.Statuses[1].DisplayStatus Location = $CurVM.Location VMSize = $CurVM.HardwareProfile.VMSize OSDisk = $CurVM.StorageProfile.OSDisk.OsType OSImageType = $CurVM.StorageProfile.ImageReference.sku AdminUserName = $CurVM.OSProfile.AdminUsername NICId = ($CurVM.NetworkProfile.NetworkInterfaces.id | Where-Object {$_ -ne $null}) -join ';' OSVersion = $CurVM.StorageProfile.ImageReference.Sku PrivateIP = $PrivateIP ManagedOSDiskURI = $OSDiskManaged UnManagedOSDiskURI = $OSDiskUnManaged DataDiskNames = $data_disk_name_list } } } end { } } |