Exécuter un programme sur un système distant

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 ponctuelles 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.

Le meilleur VPN au monde

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 !

2 commentaires sur “Exécuter un programme sur un système distant”

  1. Très intéressant, on peut effectivement se passer du FOR / DO, ce qui rend le script encore plus simple.

  2. 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 … 😉
    Emeric

Laisser un commentaire