OpsMgr: Petite astuce pour faire fonctionner les notifications par script

Lors de la définition d’une notification par script avec Operations Manager, on utilise souvent des variables XPATH qui sont ajoutées en paramètres du script. Par exemple, on peut utiliser la syntaxe suivante pour envoyer la notification vers un fichier :


Full Path to File : %SystemRoot%\System32\cmd.exe


Command Line Parameter : /C Echo $Data/Context/DataItem/ManagedEntityDisplayName$ $Data/Context/DataItem/ManagedEntityPath$ $Data/Context/DataItem/AlertName$ $Data/Context/DataItem/AlertDescription$


Le premier problème de cette syntaxe est que le contenu des variables peut inclure des espaces qui seront considérés comme des séparateurs ou d’autres caractères (<>|) qui peuvent être interceptés par l’interpréteur de commande. Il convient donc de mettre les variables entre guillemets :


Full Path to File : %SystemRoot%\System32\cmd.exe


Command Line Parameter : /C Echo $Data/Context/DataItem/ManagedEntityDisplayName$” “$Data/Context/DataItem/ManagedEntityPath$” “$Data/Context/DataItem/AlertName$” “$Data/Context/DataItem/AlertDescription$


Le second problème est que, pour certaines alertes, des variables peuvent être vides. Dans ce cas, cela provoque une erreur et interrompt la notification. Il faut donc indiquer, pour chaque variable pouvant être vide, une valeur par défaut :


Full Path to File : %SystemRoot%\System32\cmd.exe


Command Line Parameter : /C Echo $Data[Default='No Name']/Context/DataItem/ManagedEntityDisplayName$” “$Data/Context/DataItem/ManagedEntityPath$” “$Data/Context/DataItem/AlertName$” “$Data[Default='No Description']/Context/DataItem/AlertDescription$