PI Services

Le blog des collaborateurs de PI Services

SCOM – Powershell: Script de resolution d’alertes avec Regex et Switch.

 

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}

    }   

}

Ajouter un commentaire

Loading