Private/Get-AzureInstanceData.ps1

function Get-AzureInstanceData {
    [CmdletBinding()]
    param(
        [string]$ResourceGroup
    )

    Assert-CommandAvailable `
        -CommandName 'Get-AzVM' `
        -InstallHint "Install the Az.Compute module with: Install-Module Az.Compute -Scope CurrentUser"

    $virtualMachines = Get-AzVM -ResourceGroupName $ResourceGroup -Status -ErrorAction Stop

    foreach ($virtualMachine in $virtualMachines) {
        $powerStatus = $virtualMachine.Statuses |
            Where-Object { $_.Code -like 'PowerState/*' } |
            Select-Object -First 1 -ExpandProperty DisplayStatus

        ConvertTo-CloudRecord `
            -Name $virtualMachine.Name `
            -Provider Azure `
            -Region $virtualMachine.Location `
            -Status (ConvertFrom-AzurePowerState -PowerState $powerStatus) `
            -Size $virtualMachine.HardwareProfile.VmSize `
            -Metadata @{
                ResourceGroup = $virtualMachine.ResourceGroupName
                VmId          = $virtualMachine.VmId
                OsType        = $virtualMachine.StorageProfile.OsDisk.OsType.ToString()
            }
    }
}