Analyse de votre infrastructure informatique

Accueil Downloads Entrerprise Contact


Base de connaissance






Supervision applicative | Scripts | Monitorpack.fr

Utliser les scripts avec Monitorpack

Monitorpack permet d'appeler un fichier pour répondre à une alarme et déclencher une procédure. Dans tous les cas Monitorpack n'appelle que des fichiers batch. Nous vous recommandons d'utiliser par défaut des fichiers batch, ou d'appeler vos fichiers vbs, PowerShell, etc... depuis un fichier bacth.

Le sous-dossier scripts du dossier Monitorpack Guard est limité en droit accès, par défaut vous ne pouvez pas créer de fichiers. Nous vous recommandons de lancer les scripts depuis ce dossier mais de générer les sorties de vos requêtes dans un dossier où vous avez la totalité des droits pour écrire supprimer et modifier.

N'oubliez pas que c'est le compte de service utilisé par Monitorpack et qui va en réalité exécutez vos scripts c'est donc à ce compte que vous devez donner les droits.

L'élévation des droits d'exécution est à prendre en compte lorsque vous utilisez des fichiers PowerShell référez-vous au TechNet Microsoft pour plus d'informations.



Ce script n'est valable que dans un contexte de workgroup car il est nécessaire d'avoir dans ce cas le même compte de service avec le même mot de passe sur toutes les machines, Donc n'utilisez pas ce script dans une forêt Active Directory puisqu'il suffit de créer une seule fois le compte au niveau de la forêt Active Directory

' Nom du script : CreateMonitorpackAdminUsers.vbs
' Vérifie si le script est exécuté avec les privilèges administratifs
If Not WScript.Arguments.Named.Exists("elevated") Then
' Crée un objet shell pour relancer le script en mode administrateur
Set objShell = CreateObject("Shell.Application")
' Relance le script avec les privilèges administratifs
objShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """ /elevated", "", "runas", 1
WScript.Quit
End If
' Variables pour les nouveaux comptes utilisateurs
Dim users(1)
users(0) = Array("sys_monitorsvc", "MotDePasseSecuriseSvc123!", "System Monitor Service")
users(1) = Array("sys_monitoradm", "MotDePasseSecuriseAdm123!", "System Monitor Admin")
' Crée un objet pour gérer les utilisateurs
Set objNetwork = CreateObject("WScript.Network")
Set objUser = GetObject("WinNT://" & objNetwork.ComputerName & "")
Set objGroup = GetObject("WinNT://" & objNetwork.ComputerName & "/Administrateurs,group")
' Fonction pour créer un utilisateur et l'ajouter au groupe Administrateurs
Sub CreateAndAddUser(userName, password, fullName)
' Crée le compte utilisateur
Set objNewUser = objUser.Create("user", userName)
objNewUser.SetPassword password
objNewUser.FullName = fullName
objNewUser.SetInfo
' Ajoute le nouvel utilisateur au groupe Administrateurs
objGroup.Add(objNewUser.ADsPath)
End Sub
' Boucle pour créer les utilisateurs et les ajouter au groupe
For Each user In users
CreateAndAddUser user(0), user(1), user(2)
Next
' Affiche un message de confirmation
WScript.Echo "Accounts sys_monitorsvc and sys_monitoradm have been created and added in Administrateurs group."


Exécuter ce script sur toutes les machines cibles que vous voulez piloter. Pour votre information, le service WinRM n'est pas obligatoire mai peut être utile si vous exécutez des scripts Remote PowerShell.

'Copyrigth Monitorpack 2003 -2023
' Nom du script : VerifyWindowsServicesForMonitorpack.vbs
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
'=================================================
' Verify if service WMI is Running
'=================================================
Set colItemsWMI = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'winmgmt'")
'=================================================
' Verify if service Remote Registry is Running
'=================================================
Set colItemsRemoteRegistry = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'RemoteRegistry'")
'=================================================
' Verify if service Remote RPC is Running
'=================================================
Set colItemsRemoteRPC = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'RpcSs'")
'=================================================
' Verify if service Remote DcomLaunch is Running
'=================================================
Set colItemsDcomLaunch = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'DcomLaunch'")
'=================================================
' Verify if service Remote RPC is Running
'=================================================
Set colItemsRemoteRPC = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'RpcSs'")
'Parcourt les résultats de la requête pour le service WMI
For Each objItem in colItemsWMI
If objItem.State = "Running" Then
' Service WMI is Running
MsgBox "Service WMI is Running.", vbInformation, "Service WMI"
Else
' Service WMI is Stopped
' ervice WMI is Stopped
MsgBox "ervice WMI is Stopped.", vbExclamation, "Service WMI"
End If
Next
' Parcourt les résultats de la requête pour le service Remote Registry
For Each objItem in colItemsRemoteRegistry
If objItem.State = "Running" Then
' Le service Remote Registry is Running
MsgBox "Le service Remote Registry is Running.", vbInformation, "Service Remote Registry"
Else
' Le service Remote Registry is Stopped
MsgBox "Le service Remote Registry is Stopped.", vbExclamation, "Service Remote Registry"
End If
Next
' Parcourt les résultats de la requête pour le service Remote RPC
For Each objItem in colItemsRemoteRPC
If objItem.State = "Running" Then
' Le service Remote RPC is Running
MsgBox "Le service Remote RPC is Running.", vbInformation, "Service Remote RPC"
Else
' Le service Remote RPC is Stopped
MsgBox "Le service Remote RPC is Stopped.", vbExclamation, "Service Remote RPC"
End If
Next
' Parcourt les résultats de la requête pour le service DcomLaunch
For Each objItem in colItemsDcomLaunch
If objItem.State = "Running" Then
' Le service DcomLaunch is Running
MsgBox "Le service DcomLaunch is Running.", vbInformation, "Service DcomLaunch"
Else
' Le service DcomLaunch is Stopped
MsgBox "Le service DcomLaunch is Stopped.", vbExclamation, "Service DcomLaunch"
End If
Next
' Verifie si le service WinRM (Windows Remote Management) est Running
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItemsWinRM = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'WinRM'")
' Parcourt les résultats de la requête pour le service WinRM
For Each objItem in colItemsWinRM
If objItem.State = "Running" Then
' Le service WinRM is Running
MsgBox "Le service WinRM is Running.", vbInformation, "Service WinRM"
Else
' Le service WinRM is Stopped
MsgBox "Le service WinRM is Stopped.", vbExclamation, "Service WinRM"
End If
Next


powershell.exe -ExecutionPolicy Bypass -File "C:\Program Files (x86)\Monitorpack Guard\Scripts\MyScript.ps1"


@echo off
wscript.exe "C:\Program Files (x86)\Monitorpack Guard\monscript.vbs"


Pour redémarrer ou démarrer un service Windows depuis une machine distante en utilisant un script, tout en prenant en compte les contraintes de sécurité, PsExec est une solution robuste et sécurisée.

PsExec est un utilitaire de la suite Sysinternals de Microsoft qui permet d'exécuter des processus à distance.
Assurez-vous que le compte de service que vous utilisez a les autorisations nécessaires pour exécuter des commandes à distance. Vous pouvez ajouter ce compte aux administrateurs locaux de chaque machine distante.

Téléchargez PsExec à partir du site officiel, décompressez le fichier et placez psexec.exe dans un répertoire accessible via la variable d'environnement PATH ou dans le même répertoire que votre script batch.

Remplacez NomDeLaMachineDistante et NomDuService par les valeurs appropriées. Enregistrez le fichier avec une extension .bat (par exemple, manage_service.bat). Créer une alerte Monitorpack de type script et sélectionnez le fichier bath à exécuter en cas d'alarme.

Demarrer un service Windows

@echo off
set ComputerName=NomDeLaMachineDistante
set ServiceName=NomDuService
psexec \\%ComputerName% -s -d sc start %ServiceName%

Arreter et redemarrer un service Windows

@echo off
set ComputerName=NomDeLaMachineDistante
set ServiceName=NomDuService
psexec \\%ComputerName% -s -d sc stop %ServiceName%
psexec \\%ComputerName% -s -d sc start %ServiceName%