Flash info

"La connaissance ce n’est point la possession de la vérité, mais d’un langage cohérent."

Antoine de Saint Exupéry (1900-1944)

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
jeelou2000
Utilisateur

PowerShelleur Amateur
Messages: 59
graphgraph
Karma: 0  
Surveiller un SERVICE (Résolu) - 11/07/07 11:05 Bonjour,
serait-t-il possible avec PowerShell de surveiller un process afin de le redémarrer s'il s'arrêtait?

Merci
Jeel

Message édité par: jeelou2000, à: 11/07/07 17:43

Message édité par: jeelou2000, à: 12/07/07 21:43
  | | L'administrateur a désactivé l'accés public en écriture.
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Re:Surveiller un process - 11/07/07 11:43 Tu veux le surveiller en continu et le redemarrer au moment meme ou il s'arette ou juste au lancement de ton script ? Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
jeelou2000
Utilisateur

PowerShelleur Amateur
Messages: 59
graphgraph
Karma: 0  
Re:Surveiller un process - 11/07/07 12:50 la surveillance devra êtra continue (exactement comme tu l'as mis).

Jeel
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1319
graphgraph
Karma: 45  
Re:Surveiller un process - 11/07/07 13:32 Bonjour Jeelou et bienvenue à toi sur le forum,

Juste pour éclaircir ma lanterne, tu parles bien de surveiller un process, pas un service ?

Dans le cas d'un process, il faut que tu récupères la référence du process à surveiller, genre :

Code:

 $p=get-process notepad



puis il existe la méthode WaitForExit() qui te permettras d'attendre la fin du process. Ton script se mettra en pause tant que ton process tourne. Ainsi s'il s'arrete tu n'auras plus qu'à le relancer indéfiniment.

Code:

 $p.WaitForExit()



Ce n'est certainement pas la meilleur méthode mais c'est la première à laquelle je pense.
Pour obtenir toutes les méthodes et propriétés associées à un objet process, n'hésites pas à utiliser Get-Member.

Code:

 $p Get-Member



Arnaud
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
jeelou2000
Utilisateur

PowerShelleur Amateur
Messages: 59
graphgraph
Karma: 0  
Re:Surveiller un process - 11/07/07 16:28 Arnaud, Merci d'attirer mon attention, c'est bien un service. Je présume qu'en remplaçant get-process par get-service, ton script est toujours d'actualité? Zut, il ne fonctionne pas: la methode "WaitForExit()" n'existe pas ici

Jeel

Message édité par: jeelou2000, à: 11/07/07 17:45
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1319
graphgraph
Karma: 45  
Re:Surveiller un process - 12/07/07 17:47 Jeel,

Désolé tu as perdu

Pour les services il faut utiliser la méthode WaitForStatus. Cette méthode va attendre que le service entre dans l'état désiré. Par exemple :

Code:

  $a get-service vmnetdhcp $a.WaitForStatus("stopped")



Pour plus d'info regarde ici sur MSDN

D'autre part je pense qu'il serait bien pour toi que tu approfondisses l'usage de la commandlette GET-MEMBER car tu aurais pu trouver toute seule la méthode

A++

Arnaud
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
jeelou2000
Utilisateur

PowerShelleur Amateur
Messages: 59
graphgraph
Karma: 0  
Re:Surveiller un process - 12/07/07 19:41 Zut, j'y travaillais justement dessus:
Code:

 Get-Service Wavesu where {$_.WaitForStatus("Stopped")} $date_stop date $s=get-service Wavesu if ("$s.status" -eq "stopped") {start-service $s.name} $date_start date Write "Service WavesetSync stopped at $date_stop and be restart at $date_start" >> E:\WSU_Services_report.txt  $s=get-service Wavesu Get-Service Wavesu where {$_.WaitForStatus("Stopped")}



Merci à toi, en tout cas;
Jeel

Message édité par: jeelou2000, à: 12/07/07 20:42
  | | L'administrateur a désactivé l'accés public en écriture.
jeelou2000
Utilisateur

PowerShelleur Amateur
Messages: 59
graphgraph
Karma: 0  
Re:Surveiller un process - 12/07/07 20:41 Voilà:
Pour ceux que celà intéresse, voici le code complet:
Code:

 $Boucle_1=1 $v_count1 while ($Boucle_1=1) { Get-Service Wavesu where {$_.WaitForStatus("Stopped")} $date_stop date $s=get-service Wavesu start-service Wavesu $date_start date Write "$v_count : Service Wavesu stopped at $date_stop and be restart at $date_start" >> E:\Wavesu_Services_report.txt  $s=get-service Wavesu $v_count++ }


Toutes les nuits, le fichier de rapport sera envoyé par mail et nettoyé.
Merci à Arnaud

Jeel
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1319
graphgraph
Karma: 45  
Re:Surveiller un process - 21/07/07 02:08 Salut Jeelou,

Je me suis servi de ta question pour alimenter la FAQ et au passage modifier légèrement ton script.

-> C'est ici. <-

A bientôt,

Arnaud

Message édité par: Arnaud, à: 21/07/07 03:09
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
© 2020 PowerShell-Scripting.com