Я работаю с SCOM (SystemCenterOperationsManager) и написал небольшой скрипт для запланированной задачи.
Он должен собирать все оповещения NEW ( ResolutionState = 0 )
и фильтровать их с помощью моего правила с подстановочными знаками.
Это изменит состояние разрешения для всех собранных предупреждений на определенное состояние разрешения.
Моя проблема:
Чтобы получить отчет обо всех выбранных оповещениях, я хочу создать «Out-файл». Где его разместить?
Вот мой код:
if ($LastHourAlerts)
{
foreach($Alert in $LastHourAlerts)
{
$newState = $null
switch -wildcard ($Alert.Name)
{
"Operations Manager failed to start a process" { $newState = 255 }
"Operations Manager failed to check the state of a service" { $newState = 255 }
"Operations Manager failed to run a WMI query" { $newstate =255 }
"Interface Utilization Alert" { $newState = 15 }
"Veeam VMware: Datastore Provisioning Analysis" { $newState = 17 }
"Veeam VMware Collector: VMware connection data processing errors" { $newState = 17 }
"Veeam VMware Collector: VMware connection is unavailable" { $newState = 17 }
"Veeam VMware: Virtual Machine Memory Usage Analysis" { $newState = 17 }
"Veeam VMware: Virtual Machine CPU Usage Analysis" { $newState = 17 }
"Veeam VMware: Virtual Machine Memory Ballooning and Swapping Analysis" { $newState = 17 }
"Veeam VMware: Virtual Machine Storage Latency Analysis" { $newState = 17 }
"Veeam VMware: Virtual Machine Consolidation Needed status Alarm" { $newState = 17 }
"Veeam VMware: Maintenance Mode Tracker" { $newState = 17 }
"Veeam VMware: vSphere Host Storage Commands Failed Analysis" { $newState = 17 }
"Veeam VMware: vSphere Host Network Packet Loss Analysis" { $newState = 17 }
"Veeam VMware: vSphere Host Memory Swapping Analysis" { $newState = 17 }
"Veeam VMware: vSphere Host Memory Usage Analysis" { $newState = 17 }
"Veeam VMware: vSphere Host Kernel Latency Analysis" { $newState = 17 }
"Veeam VMware: vSphere Cluster Memory Overcommit Analysis" { $newState = 17 }
"Veeam VMware: VM customization failed" { $newState = 17 }
}
if($newState -ne $null)
{
$Alert.ResolutionState = $newState
$Alert.Update(“Resolution State changed automatically by Automation”)
}
}
}
Я пробовал что-то вроде этого в конце цикла if:
$Alert.Name | Out-File ("$path\" + "Report.csv") -Append
Хоть и берет имя, но записывает только имя первого объекта тревоги в числе всех обработанных тревог. Например:
5 различных предупреждений:
Operations Manager failed to start a process
Interface Utilization Alert
Veeam VMware: VM customization failed
Veeam VMware: Virtual Machine CPU Usage Analysis
Veeam VMware Collector: VMware connection is unavailable
и это в .csv:
Operations Manager failed to start a process
Operations Manager failed to start a process
Operations Manager failed to start a process
Operations Manager failed to start a process
Operations Manager failed to start a process
Есть ли лучший способ получить вывод данных? Кроме того, я хотел бы иметь не только $Alert.Name
, но и $Alert.Name, $Alert.TimeRaised, $ResolutionState
.
$Alert | Format-Table Name, ResolutionState -AutoSize
. - person Ansgar Wiechers   schedule 23.03.2016