Public/Get-AnyStackActiveAlarm.ps1
|
function Get-AnyStackActiveAlarm { <# .SYNOPSIS Retrieves actively triggered vCenter Alarms across the hierarchy. .DESCRIPTION Round 8: VCF.AlarmManager. Uses the vCenter AlarmManager ExtensionData to rapidly fetch triggered alarms (Red/Yellow states) without crawling individual entities. #> [CmdletBinding(SupportsShouldProcess=$true)] param( [Parameter(Mandatory=$true)] $Server ) process { $ErrorActionPreference = 'Stop' Write-Verbose "Fetching triggered alarms from AlarmManager..." # Access the root folder and AlarmManager $si = Get-View ServiceInstance -Server $Server $alarmManager = Get-View $si.Content.AlarmManager -Server $Server # Get alarmed entities starting from Root $triggered = $alarmManager.GetAlarmState($si.Content.RootFolder) foreach ($alarmState in $triggered) { if ($alarmState.OverallStatus -ne "green") { $entity = Get-View -Id $alarmState.Entity -Property Name $alarmDef = Get-View -Id $alarmState.Alarm -Property Info [PSCustomObject]@{ EntityName = $entity.Name EntityType = $alarmState.Entity.Type AlarmName = $alarmDef.Info.Name Status = $alarmState.OverallStatus TriggerTime = $alarmState.Time Acknowledged = $alarmState.Acknowledged } } } } } |