Hi Team,
I am looking for script to collect "Triggered Alarms" from 4 VC's in a single report. We are using ESXi 4.1 Ver in all VC's.
Is it possible to collect all Triggered Alarms from 4 VC's in a sigle report and automatically through mail with Excel report.
Thank You,
Regards,
Srinivasu
Finally the below script helped for my requirement.
Try below script to collect triggered alarms from multiple vCenters:
How to run this scripts: .\Get-TriggeredAlarms -vCenters vc001,vc002 vc03
Output file location: c:\temp\alarms.csv
Script:
______________________________________________________________________________
param (
[String[]]$vCenters
)
Function Get-TriggeredAlarms {
param (
$vCenter = $(throw "A vCenter must be specified."),
[System.Management.Automation.PSCredential]$credential
)
if ($credential) {
$vc = Connect-VIServer $vCenter -Credential $credential
}
else {
$vc = Connect-VIServer $vCenter
}
if (!$vc) {
Write-Host "Failure connecting to the vCenter $vCenter."
exit
}
$rootFolder = Get-Folder -Server $vc "Datacenters"
foreach ($ta in $rootFolder.ExtensionData.TriggeredAlarmState) {
$alarm = "" | Select-Object VC, EntityType, Alarm, Entity, Status, Time, Acknowledged, AckBy, AckTime
$alarm.VC = $vCenter
$alarm.Alarm = (Get-View -Server $vc $ta.Alarm).Info.Name
$entity = Get-View -Server $vc $ta.Entity
$alarm.Entity = (Get-View -Server $vc $ta.Entity).Name
$alarm.EntityType = (Get-View -Server $vc $ta.Entity).GetType().Name
$alarm.Status = $ta.OverallStatus
$alarm.Time = $ta.Time
$alarm.Acknowledged = $ta.Acknowledged
$alarm.AckBy = $ta.AcknowledgedByUser
$alarm.AckTime = $ta.AcknowledgedTime
$alarm
}
Disconnect-VIServer $vCenter -Confirm:$false
}
Write-Host ("Getting the alarms from {0} vCenters." -f $vCenters.Length)
$alarms = @()
foreach ($vCenter in $vCenters) {
Write-Host "Getting alarms from $vCenter."
$alarms += Get-TriggeredAlarms $vCenter
}
$alarms | export-csv c:\temp\alarms.
Moderator note: Moved to the vCenter Server forum area.
Finally the below script helped for my requirement.
Try below script to collect triggered alarms from multiple vCenters:
How to run this scripts: .\Get-TriggeredAlarms -vCenters vc001,vc002 vc03
Output file location: c:\temp\alarms.csv
Script:
______________________________________________________________________________
param (
[String[]]$vCenters
)
Function Get-TriggeredAlarms {
param (
$vCenter = $(throw "A vCenter must be specified."),
[System.Management.Automation.PSCredential]$credential
)
if ($credential) {
$vc = Connect-VIServer $vCenter -Credential $credential
}
else {
$vc = Connect-VIServer $vCenter
}
if (!$vc) {
Write-Host "Failure connecting to the vCenter $vCenter."
exit
}
$rootFolder = Get-Folder -Server $vc "Datacenters"
foreach ($ta in $rootFolder.ExtensionData.TriggeredAlarmState) {
$alarm = "" | Select-Object VC, EntityType, Alarm, Entity, Status, Time, Acknowledged, AckBy, AckTime
$alarm.VC = $vCenter
$alarm.Alarm = (Get-View -Server $vc $ta.Alarm).Info.Name
$entity = Get-View -Server $vc $ta.Entity
$alarm.Entity = (Get-View -Server $vc $ta.Entity).Name
$alarm.EntityType = (Get-View -Server $vc $ta.Entity).GetType().Name
$alarm.Status = $ta.OverallStatus
$alarm.Time = $ta.Time
$alarm.Acknowledged = $ta.Acknowledged
$alarm.AckBy = $ta.AcknowledgedByUser
$alarm.AckTime = $ta.AcknowledgedTime
$alarm
}
Disconnect-VIServer $vCenter -Confirm:$false
}
Write-Host ("Getting the alarms from {0} vCenters." -f $vCenters.Length)
$alarms = @()
foreach ($vCenter in $vCenters) {
Write-Host "Getting alarms from $vCenter."
$alarms += Get-TriggeredAlarms $vCenter
}
$alarms | export-csv c:\temp\alarms.