Administration du réseau Outils d'administration Script VBS pour lancer un script sur une autre machine |
'----------------------------------------------------------------------------- ' Fichier : remote_scripting.vbs ' Créé par Pascal Arnould le 01/06/2006 ; Modifié le 05/06/2006 '----------------------------------------------------------------------------- ' Procédure permettant de lancer l'exécution d'un script sur une machine ' distante d'un réseau local. Pour fonctionner correctement, les conditions ' suivantes doivent être réunies : ' - Les deux postes doivent être sous un domaine, avec un serveur tournant ' sous Windows 2000 Server ou Windows 2003 Server. ' - La clé suivante de la base de registre doit se trouver sur les deux ' postes et doit avoir la valeur 1 : ' HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings\Remote ' (si ce n'est pas le cas, la créer : "Nouvelle" "Valeur chaîne", une clé ' de type REG_SZ est créée). ' - Sur les postes sous Windows XP, lancer une fois pour toute la commande ' (menu démarrer, "exécuter") : wscript -regserver ' - Il faut se loger sur le PC depuis lequel la commande va être lancée ' avec un compte ayant les droits sur le poste distant (administrateur du ' serveur, par exemple). ' - Il n'est pas nécessaire d'avoir de session ouverte sur le poste distant, ' il suffit qu'il soit sous tension. ' Le script à lancer à distance doit se trouver dans le même dossier. ' Si ce n'est pas le cas, spécifier le chemin dans la boîte de dialogue. ' Pour exécuter ce script, taper dans une fenêtre de commande : ' wscript remote_scripting.vbs ' On peut également créer un raccourci vers ce script vbs, en spécifiant la ' cible : C:\WINDOWS\system32\wscript.exe remote_scripting.vbs '----------------------------------------------------------------------------- ' Déclaration des variables : Option Explicit Dim RemoteComputer Dim RemoteScript Dim oCtrl, oProcess '----------------------------------------------------------------------------- ' Demande à l'utilisateur du nom du script et du nom de l'ordinateur distant : RemoteComputer = InputBox ("Saisissez le nom de l'ordinateur distant sur lequel exécuter le script") RemoteScript = InputBox ("Saisissez le nom du script à exécuter sur l'ordinateur distant") ' Fin du programme si pas de nom fourni : If RemoteComputer = "" Then WScript.Quit If RemoteScript = "" Then WScript.Quit '----------------------------------------------------------------------------- ' Initialisation des variables : Set oCtrl = WScript.CreateObject("WSHController") Set oProcess = oCtrl.CreateScript(RemoteScript, RemoteComputer) '----------------------------------------------------------------------------- ' On lance le script sur l'ordinateur distant : WScript.ConnectObject oProcess, "Process_" oProcess.Execute '----------------------------------------------------------------------------- ' On attend que le script soit terminé sur le poste distant... Do While oProcess.Status <> 2 WScript.Sleep 100 Loop '----------------------------------------------------------------------------- ' On déconnecte le processus lancé à distance : WScript.DisconnectObject oProcess '----------------------------------------------------------------------------- ' On affiche un message de fin et on quitte. WScript.Echo "Le script 'remote_scripting.vbs' est terminé !" WScript.Quit '----------------------------------------------------------------------------- ' Si une erreur se produit, on l'affiche : Sub Process_Error With oProcess.Error WScript.Echo "Erreur " & .Number & ", Ligne : " & .Line & ", Car : " & .Character & vbCrLf & .Description WScript.Quit End With End Sub ' Message s'affichant quand le script distant commence son exécution : Sub Process_Start Msgbox "Script distant commencé..." End Sub ' Message s'affichant quand le script distant termine son exécution : Sub Process_End Msgbox "Fin d'exécution du script distant..." End Sub '----------------------------------------------------------------------------- |