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 = if ([string]::IsNullOrWhiteSpace($ResourceGroup)) { Get-AzVM -Status -ErrorAction Stop } else { 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 $tagHashtable = @{} if ($virtualMachine.Tags) { $virtualMachine.Tags.GetEnumerator() | ForEach-Object { $tagHashtable[$_.Key] = $_.Value } } ConvertTo-CloudRecord ` -Name $virtualMachine.Name ` -Provider Azure ` -Region $virtualMachine.Location ` -Status (ConvertFrom-AzurePowerState -PowerState $powerStatus) ` -Size $virtualMachine.HardwareProfile.VmSize ` -Tags $tagHashtable ` -Metadata @{ ResourceGroup = $virtualMachine.ResourceGroupName VmId = $virtualMachine.VmId OsType = $virtualMachine.StorageProfile.OsDisk.OsType.ToString() } } } |