Le 22 Sep. 2009 par hatmos
Scripting, Windows 7, Windows Server 2003, Windows Server 2008, Windows Vista, Windows XP
2 commentaires
Lorsqu’il s’agit d’exécuter un programme ou un script sur un serveur distant on peut toujours le faire en se connectant dessus en Terminal Server, Dameware Remote Control, PC Anywhere ou autre outil de prise de main à distance. Cette solution convient parfaitement pour des actions ponctuelle mais s’avère beaucoup plus contraignante lorsque l’on doit exécuter le même programme sur plusieurs serveurs ! Heureusement il existe PsExec …
PsExec est un outil en ligne de commande fournit dans la suite PsTools de chez Sysinternals. Il permet d’exécuter à distance des commandes, des programmes, des batches, comme si vous étiez connecté sur le serveur distant. Cet outil est très prisé des administrateurs pour son efficacité et parce qu’il permet d’économiser beaucoup de temps … surtout lorsqu’il s’agit d’effectuer des tâches rébarbatives.
Installation et utilisation
Côté installation c’est très simple. Téléchargez la suite PsTools et placez psexec.exe par exemple dans le C:\ de votre station d’administration ou d’un serveur.
Ouvrez ensuite une invite de commande et tapez psexec.exe /? pour afficher les options disponibles.
Voici maintenant quelques exemples d’utilisation de PsExec
- Pour copier puis pour éxécuter le programme hotfix.exe un serveur
psexec \\server1 -c hotfix.exe
- Pour arrêter le service spooler sur le serveur distant \\SERVER2
psexec \\server2 net stop spooler
- Pour lancer Internet Explorer sur votre machine locale avec des droits limités:
psexec -l -d "c:\program files\internet explorer\iexplore.exe"
- Pour lancer un programme sur plusieurs serveurs à la fois
Pour lancer un programme sur plusieurs serveurs distants à la fois il faut tout d’abord créer un référentiel des serveurs sur lesquels seront exécutés le programme. Pour cela je créé simplement un fichier list.txt contenant un serveur par ligne.
SRV01
SRV02
SRV03
SRV04
Il faut ensuite créer un fichier batch qui balayera le fichier list.txt et exécutera la commande désirée pour chacun des serveurs référencés. J’ajoute le code suivant dans un fichier nommé RemoteStopSpooler.bat
for /F %%1 IN (list.txt) do psexec.exe \\%%1 net stop spooler
Il suffit de lancer RemoteStopSpooler.bat pour arrêter le service d’impression sur les serveurs SRV01 à SRV04. Et la j’ai vraiment gagner du temps !
contribuer
[ Devenir rédacteur sur SysKB ]
rechercher
voter
explorer
la logithèque (Windows | iPhone | Windows Phone 7)
- derniers logiciels
-
- [Version bêta] Chrome
- Filezilla
- Opera
- VirtualBox
- Defraggler
- Wireshark
- CCleaner
- Firefox
- Autoruns
- AVG Free Edition
partenaires
- services en ligne
-
- Envoyer des gros fichiers avec Free
- DNS Lookup
- Calculer un sous réseau
RSS
Email
Twitter
Ils en parlent sur le forum
Bonjour,
Pour le dernier exemple, il est aussi possible de passer le fichier “list.txt” en paramètre de PSEXEC comme ceci:
psexec @list.txt net stop spooler
La commande ci-dessus produit le même effet que la création d'un fichier “bat”.
C'était la petite précision du jours …
Comment par orducom1 le 23 September 2009 a 10:18Emeric
Très intéressant, on peut effectivement se passer du FOR / DO, ce qui rend le script encore plus simple.
Comment par hatmos le 26 September 2009 a 09:40Flux RSS sur les commentaires de cet article · TrackBack URI
Laissez un commentaire sur le forum