Generate Virtual Machine Inventory Report
Microsoft.SystemCenter.WindowsAzure.Subcription.GenerateComputeVmReport.Task (Task)
Generates a report with the list of all Virtual Machines (classic and non-classic).
Element properties:
Member Modules:
Source Code:
<Task ID="Microsoft.SystemCenter.WindowsAzure.Subcription.GenerateComputeVmReport.Task" Accessibility="Public" Enabled="true" Target="Microsoft.SystemCenter.MicrosoftAzure.Subscription" Timeout="300" Remotable="true">
<Category>System</Category>
<WriteAction ID="WA" TypeID="Windows!Microsoft.Windows.PowerShellWriteAction">
<ScriptName>GenerateComputeVmReport.ps1</ScriptName>
<ScriptBody><Script>
function Get-CustomVM($vm)
{
foreach ($prop in $vm.GetProperties())
{
$vm | Add-Member -MemberType NoteProperty -Name $prop.Name -Value $vm[$prop].Value -Force
}
$vm
}
$subscriptionId = '$Target/Property[Type="Microsoft.SystemCenter.MicrosoftAzure.Subscription"]/SubscriptionId$'
$OpsMgrMainLib = "Microsoft.EnterpriseManagement.OperationsManager,Version=7.0.5000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
[void][Reflection.Assembly]::Load($OpsMgrMainLib)
$mg = new-object Microsoft.EnterpriseManagement.ManagementGroup("localhost")
$mpClassCriteria = new-object Microsoft.EnterpriseManagement.Configuration.MonitoringClassCriteria("Name = 'Microsoft.SystemCenter.MicrosoftAzure.GenericVirtualMachine'")
$mpClass = $mg.GetMonitoringClasses($mpClassCriteria)[0]
$mpObjectCriteria = new-object Microsoft.EnterpriseManagement.Monitoring.MonitoringObjectGenericCriteria("Path LIKE '%$subscriptionId%'")
$vmList = $mg.GetMonitoringObjects($mpObjectCriteria, $mpClass) | % { Get-CustomVM $_ }
$vmList | Sort ServiceName | Format-Table -Wrap -Autosize -Property HealthState, ServiceName, Location, Size, OsVersion
</Script></ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
</WriteAction>
</Task>