Private/Get-AzureInstanceData.ps1

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

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

    $virtualMachines = if ([string]::IsNullOrWhiteSpace($ResourceGroup)) {
        Get-AzVM -Status -ErrorAction Stop
    } else {
        Get-AzVM -ResourceGroupName $ResourceGroup -Status -ErrorAction Stop
    }

    if (-not [string]::IsNullOrWhiteSpace($Name)) {
        $virtualMachines = @(
            $virtualMachines | Where-Object { $_.Name -eq $Name }
        )
    }

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

        $normalizedStatus = ConvertFrom-AzurePowerState -PowerState $powerStatus
        if ([string]::IsNullOrWhiteSpace($normalizedStatus)) {
            $normalizedStatus = 'Ready'
        }

        $tagHashtable = @{}
        if ($virtualMachine.Tags) {
            $virtualMachine.Tags.GetEnumerator() | ForEach-Object { $tagHashtable[$_.Key] = $_.Value }
        }

        $addressData = Get-AzureInstanceAddressData -VirtualMachine $virtualMachine

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