Voici un script de resolution d’alertes indésirables qui utilise:
1- une expression reguliere pour filtrer certains champs d’alertes
2 – une declaration switch pour prendre en charge des filtres de maniere plus pratique qu’avec if…else.
#Fermeture de certaines alertes#>
<#modifiez et/ou Incrementez les variables alertes pour prendre en charge d’autres noms d’alertes#>
$Alert1="The previous system shutdown (le dernier arret systeme n'etait pas prévu)"
$Alert2="Redemarrage Propre du serveur"
$Alert3="Database Backup Failed To Complete"
$Alert4="Network interface failed."
<#modifier $MachinePattern avec une autre expression reguliere. Ici par defaut
on recherche les alertes générées par une machine dont le nom contiens la chaine “TEST”#>
$MachinePattern="^.*(TEST).*$"
#Initialisation du provider SCOM
add-pssnapin "Microsoft.EnterpriseManagement.OperationsManager.Client" -ErrorVariable errSnapin -erroraction silentlycontinue;
set-location "OperationsManagerMonitoring::" -ErrorVariable errSnapin;
new-managementGroupConnection -ConnectionString:monserveurscom.home -ErrorVariable errSnapin;
set-location monserveurscom.home -ErrorVariable errSnapin;
#Verification du chargement du provider SCOM
if ($errSnapin.count -eq 0){
Write-host "`nOpsMgr 2007 PSSnapin initialized!`n";
}
else{
Write-host "`nOpsMgr 2007 PSSnapin failed initialize!`nPlease verify you are running this script on a OpsMgr 2007 Management Server";
}
$AllOpenAlert=get-alert | where-object {$_.ResolutionState -eq "0"}
Foreach ($alert in $AllOpenAlert)
{
switch($alert)
{
{$_.Name -eq $Alert1 -OR $_.Name -eq $Alert2 -AND $_.MonitoringObjectName -match $MachinePattern -AND $_.LastModified -lt [DateTime]::Now.Adddays(-1)} {resolve-alert -Alert $_ ; write-host -NoNewline $_.Name "SUR" $_.MonitoringObjectName " -- "}
{$_.Name -eq $Alert3 -OR $_.Name -eq $Alert4 -AND $_.MonitoringObjectPath -match $MachinePattern -AND $_.LastModified -lt [DateTime]::Now.Adddays(-1)} {resolve-alert -Alert $_ ; write-host -NoNewline $_.Name "SUR" $_.MonitoringObjectPath " -- "}
default {break}
}
}