Andrew J. Brehm Asked: 2013-07-04 07:43:03 +0800 CST2013-07-04 07:43:03 +0800 CST 2013-07-04 07:43:03 +0800 CST 如何使用 PowerCLI 触发警报? 772 在 VM 主机上的 vSphere Client 中,警报选项卡中有一个已触发警报的视图。 如何使用 PowerCLI 获取这些警报? vmware-vsphere 3 个回答 Voted johnshen64 2013-07-04T07:58:00+08:002013-07-04T07:58:00+08:00 这就是我使用的。 $esx = Get-VMHost $vmhost | Get-View foreach($triggered in $esx.TriggeredAlarmState){ $alarmDef = Get-View -Id $triggered.Alarm Write-Host $alarmDef.Info.Name } Best Answer Doug Cowie 2013-11-13T16:42:38+08:002013-11-13T16:42:38+08:00 为了找到所有具有警报状态 =“红色”的 vmhost,我对此进行了扩展。 # # Find all hosts with triggered alarms in "Red" state # $esx_all = Get-VMHost | Get-View $Report=@() foreach ($esx in $esx_all){ foreach($triggered in $esx.TriggeredAlarmState){ If ($triggered.OverallStatus -like "red" ){ $lineitem={} | Select Name, AlarmInfo $alarmDef = Get-View -Id $triggered.Alarm $lineitem.Name = $esx.Name $lineitem.AlarmInfo = $alarmDef.Info.Name $Report+=$lineitem } } } $Report |Sort Name | export-csv "c:\temp\ESX-Host-Red-Alarms.csv" -notypeinformation -useculture Invoke-item "c:\temp\ESX-Host-Red-Alarms.csv" Jeff Schaller 2021-12-07T10:41:26+08:002021-12-07T10:41:26+08:00 为了扩展johnshen64的 PowerCLI答案,我发现 Luc Dekens在 community.vmware.com 上的帖子非常有帮助: foreach($dc in (Get-Datacenter | where {$_.ExtensionData.triggeredAlarmState})){ $dc.ExtensionData.triggeredAlarmState | Select @{N="Entity";E={Get-View $_.Entity | Select -ExpandProperty Name}}, @{N="Alarm";E={Get-View $_.Alarm | Select -ExpandProperty Info | Select -ExpandProperty Name}},Time,OverallStatus, @{N='vCenter';E={$dc.Uid.Split('@:')[1]}} } ...我最终使用了它的变体: foreach ($toplevel in @(Get-VDSwitch | Where-Object { $_.ExtensionData.TriggeredAlarmState.count -gt 0 }) + @(Get-Datacenter | Where-Object { $_.ExtensionData.TriggeredAlarmState.count -gt 0 })) { foreach ($alarm in $toplevel.ExtensionData.TriggeredAlarmState) { $localt = [System.TimeZoneInfo]::ConvertTime($alarm.time, [System.TimeZoneInfo]::Local) $entity = Get-View $alarm.Entity $alarmview = Get-View $alarm.Alarm Write-Output ("Alarm: At top-level entity $($toplevel.Name), $($entity.Name) went " + "$($alarm.OverallStatus) at $($localt) for $($alarmview.Info.Name)") } } 这个想法是遍历警报可以汇总到的每个顶级实体。我通过反复试验发现Get-VDSwitch并Get-Datacenter涵盖了我需要的内容。另一个棘手的部分是要意识到警报中的 Entity 和 Alarm 对象是对实际对象的引用,因此要获取有关实际项目的详细信息,您必须使用Get-View.
这就是我使用的。
为了找到所有具有警报状态 =“红色”的 vmhost,我对此进行了扩展。
为了扩展johnshen64的 PowerCLI答案,我发现 Luc Dekens在 community.vmware.com 上的帖子非常有帮助:
...我最终使用了它的变体:
这个想法是遍历警报可以汇总到的每个顶级实体。我通过反复试验发现
Get-VDSwitch
并Get-Datacenter
涵盖了我需要的内容。另一个棘手的部分是要意识到警报中的 Entity 和 Alarm 对象是对实际对象的引用,因此要获取有关实际项目的详细信息,您必须使用Get-View
.