Document everything you want to know about your Azure IaaS VMs in one line of PowerShell

Mark Renoden, one of my colleagues from Microsoft Australia/New Zealand has come up with this great single line of powershell that spits out everything you want to know about your VMs

Get-AzureVM | ForEach-Object { $vm = $_.name ; Write-Output "$vm VM Properties" ; Write-Output "---------------" ; Format-List -InputObject $_ -Property * ; Write-Output "$vm VM Endpoints" ; Write-Output "---------------" ; Get-AzureEndpoint -VM $_ ; Write-Output "$vm Virtual Disks" ; Write-Output "---------------" ; Get-AzureDisk | where {$_.AttachedTo.RoleName -eq $vm} ; Write-Output "==================================`n" } | Out-File -FilePath ".\myVMs.txt”

Here’s an example output:::

DeploymentName              : planky1
Name                        : planky1
Label                       :
VM                          : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVM
InstanceStatus              : ReadyRole
IpAddress                   : 100.74.110.11
InstanceStateDetails        :
PowerState                  : Started
InstanceErrorCode           :
InstanceFaultDomain         : 0
InstanceName                : planky1
InstanceUpgradeDomain       : 0
InstanceSize                : Small
AvailabilitySetName         :
DNSName                     : https://planky.cloudapp.net/
Status                      : ReadyRole
GuestAgentStatus            : Microsoft.WindowsAzure.Commands.ServiceManagement.Model.PersistentVMModel.Guest
                              AgentStatus
ResourceExtensionStatusList : {Microsoft.Compute.BGInfo}
PublicIPAddress             :
PublicIPName                :
ServiceName                 : planky
OperationDescription        : Get-AzureVM
OperationId                 : 26f35d0c908f2ad8961a2516f4b8c8a1
OperationStatus             : OK

planky1 VM Endpoints
---------------

LBSetName                :
LocalPort                : 5986
Name                     : PowerShell
Port                     : 5986
Protocol                 : tcp
Vip                      : 191.239.212.49
ProbePath                :
ProbePort                : 0
ProbeProtocol            :
ProbeIntervalInSeconds   :
ProbeTimeoutInSeconds    :
EnableDirectServerReturn : False
Acl                      : {}
InternalLoadBalancerName :

LBSetName                :
LocalPort                : 3389
Name                     : Remote Desktop
Port                     : 58168
Protocol                 : tcp
Vip                      : 191.239.212.49
ProbePath                :
ProbePort                : 0
ProbeProtocol            :
ProbeIntervalInSeconds   :
ProbeTimeoutInSeconds    :
EnableDirectServerReturn : False
Acl                      : {}
InternalLoadBalancerName :

planky1 Virtual Disks
---------------
AffinityGroup        :
AttachedTo           : RoleName: planky1
                       DeploymentName: planky1
                        HostedServiceName: planky
IsCorrupted          : False
Label                :
Location             : North Europe
DiskSizeInGB         : 128
MediaLink            : https://plankydevcamp.blob.core.windows.net/vhds/planky-planky1-2014-09-25.vhd
DiskName             : planky1-planky1-0-201409250848400102
SourceImageName      : a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201409.01-en.us-127GB.vhd
OS                   : Windows
OperationDescription : Get-AzureDisk
OperationId          : 0f3e0975-06d0-2059-856c-3c6f6d9d1953
OperationStatus      : Succeeded

==================================

 

Isn’t that just soooo cool. Thanks Mark!

 

Yours etc,

 

Planky