Question Exécuter un script powershell en tant que service

Plus d'informations
il y a 16 ans 2 mois #5946 par Laurent Dardenne
Tu peux peut être étudier la gestion d’événement extrinséque, voir le 10.2 de ce tuto .
Pour l'Event Forwarding voir aussi le chapitre 10.5.
Le pb potentiel avec ce type de surveillance est de savoir si le message généré, et émis, est bien reçu.
Olivier écrit:

Est-il possible d'intégrer cette commande sans pour autant avoir SCOM

Il faut installer le snapin, lui même peut-il être installé sans le produit, pas sûr.
L'interêt de PS est d'offrir aux admin une porte sur une solution logicielle quelqu'elle soit, dans ce cas en dehors du produit cela n'a pas de sens.
Faut vérifier les dépendances...

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 mois #5948 par Arnaud Petitjean
Bonjour à tous !

Pour ce qui est de faire exécuter un script PowerShell en tant que service, je l'ai déjà fait il y a un bon bout de temps et je m'étais servi d'un petit utilitaire super simple et pratique nommé XYNT Service . Il est bien plus pratique que le bon vieux SRVANY .

De mémoire il te faudra paramétrer un fichier comme celui-ci :

[Settings]
ServiceName = XYNTService
CheckProcessSeconds = 30
[Process0]
CommandLine = c:\winnt\system32\notepad.exe
WorkingDir= c:\
PauseStart= 1000
PauseEnd= 1000
UserInterface = Yes
Restart = Yes
[Process1]
CommandLine = java.exe MyPackage.MyClass
Restart = No
UserName =
Domain =
Password =


Et dans le paramètre CommandLine mettre quelque chose du genre PowerShell.exe -Command \"& {C:\script\monScript.ps1}\". Il faudra certainement indiquer le chemin complet de PowerShell.

Tu as au moins 2 façons d'arriver à tes fins :
1 - faire un script en boucle infinie qui va analyser tes journaux toutes les n minutes ou heures.
2 - faire un script basé sur les évènements WMI, bien plus efficace en terme de consommation CPU.

Je te recommande donc la 2nde solution.

@+

Arnaud<br><br>Message édité par: Arnaud, à: 14/01/10 23:41

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 16 ans 2 mois #5950 par TimCruz
Merci pour vos nombreuses réponses. Je pense en effet partir (comme me le conseil Arnaud) sur un script basé sur la WMI.

Je vous communiquerait mes script une fois que j'en serait à bout... Enfin, j'ai déjà pas mal de script sur le feu donc ca risque de prendre du temps et je vais sans doute vous embêter régulièrement...

\\&quot;Il n\'y a pas de probl&egrave;me, il n\'y a que des solutions\\&quot;

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 10 mois #6643 par TimCruz
Bonjour à tous!

Fort occupé par mon taf, j'en ai oublié de vous poster mon script!

Le voici :
[code:1]
Function Mail
{
$expediteur = 'MAIL EXPEDITEUR'
$destinataire = 'MAIL DESTINATAIRE'
$serveur = 'SERVEUR EXCHANGE'
$serveurHS= \&quot;$(get-wmiobject win32_computersystem).name\&quot;

$dateev = [System.DateTime]::Now
$objet = \&quot;[$serveurHS]ALERTE JOURNAL EVENEMENT $dateev\&quot;
$texte = \&quot;Nouvelle(s) entrée(s) Server Administrator dans le journal de log Ms Windows `n`n $info\&quot;

$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte

$client = new-object System.Net.Mail.SmtpClient $serveur
$client.Credentials = [System.Net.CredentialCache]::«»DefaultNetworkCredentials
$client.Send($message)
}

#On se connecte à la WMI de $computer pour analyser l'observateur d'événements
$Computer =\&quot;.\&quot;
$query = New-Object System.Management.WQleventquery \&quot;SELECT * FROM __InstanceCreationEvent
WITHIN 600
WHERE TargetInstance ISA 'Win32_NTLogEvent'
AND TargetInstance.SourceName= 'Server Administrator'\&quot;
$Scope = new-object System.Management.ManagementScope(\&quot;\\$Computer\root\cimv2\&quot;«»)
$watcher = New-Object System.Management.ManagementEventWatcher $scope,$query
$watcher.PSbase.Scope.Options.EnablePrivileges = $true

$watcher.start() #ouverture de la connexion / du watcher
$compteur=0 #On initialise le compteur pour calculer le nombre d'entrées dans le log d'événements
$info

#$date1=[System.DateTime]::Now
$date1 = get-date #On initialise la variable de date pour limiter à 2 minutes d'attente avant mail après une entrée dans le log d'événements

while ($true)
{
$event = $watcher.WaitForNextEvent()

$date2 = get-date

If ($event -ne $null) #La boucle ne se déclanche que s'il y a des événements
{
#remplissage des fichiers tampons et compteur pour log et contenu du mail
$info=$info+\&quot;`n`n $($event.TargetInstance.Message) `n`n\&quot;

$compteur=$compteur+1
sleep 1

If ($compteur -gt '15') #-or ($date2 -ge $date1.AddMinutes(2)) #On envoie un mail d'alerte avec les événements du journal quand un lot de 15 éxiste ou quand 2minutes se sont écoulées depuis le 1er événement
{
Mail


#Réinitialisation des variables de compteur, de date et de contenu de mail après chaque envoie de mail
$info=\&quot;\&quot;
$compteur=0
$date1=get-date

$event=$null #La boucle if s'arrête car $event est à nouveau null
}

If ($date2 -ge $date1.AddMinutes(2))
{
Mail


#Réinitialisation des variables de compteur, de date et de contenu de mail après chaque envoie de mail
$info=\&quot;\&quot;
$compteur=0
$date1=get-date

$event=$null
}

}
}
[/code:1]

Concrètement, dès que le service de gestion de matos DELL Server Administrator indique quoi que ce soit, ma boucle m'envoie un mail pour me prévenir.

Le script est lancé en tant que service via srvany : support.microsoft.com/kb/137890

\\&quot;Il n\'y a pas de probl&egrave;me, il n\'y a que des solutions\\&quot;

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 10 mois #6647 par Laurent Dardenne
Salut,
une petite question en passant, tu n'aurais pas testé ce type de traitement en utilsant la gestion d'événement sous PS V2 par hasard ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.097 secondes
Propulsé par Kunena