Meilleur auteur de réponses
Execution d'un script sur un serveur distant

Question
-
Bonjour,
je souhaiterais executer depuis un serveur [ICI A] des scripts de manière planifié (script bat) vers d'autres serveurs de mon parc [ICI B].
exemple de script : delete-txt-file.bat
[code]
forfiles /P "D:\toto\tata" /m *.txt /d -2 /c "cmd /c del /q @path && echo @path >> D:\titi\logs\txt-delete-file.%date:~6,4%%date:~3,2%%date:~0,2%..log"
[/code]
cependant, le script en lui même, je souhaiterai qu'il soit sur mon serveur "executeur de bat" (A) et non sur le serveur cible (B)
j'ai rapidement testé cela, mais sans succès
[code]
psexec \\serveurB '\\serveur1\D$\repertoire-script\delete-txt-file.bat' /u mondomaine\admin.alex /p 123456
[/code]
Merci de votre aide
Cordialement
- Modifié Alexandre Y jeudi 2 octobre 2014 14:56
Réponses
-
Vous pouvez faire un script sur le serveur A qui créer une tache planifiée sur le serveur B qui lance le script sur le serveur B.
Si vous voulez entrer dans la modernité, vous regardez Powershell et le Remoting, qui permet d'executer des scripts sur des serveurs distants.
Bruce Jourdain de Coutance - Consultant MVP Exchange http://blog.brucejdc.fr
- Modifié Bruce JDC jeudi 2 octobre 2014 15:20
- Marqué comme réponse Boris Ivanov _ jeudi 30 octobre 2014 10:28
-
Bonjour,
Sans vouloir vous faire succomber dans Windows Powershell, tentez la commande suivante pour votre expérimentation :
Get-ChildItem -Path Q:\Toto\Tata\* -Filter *.txt | Select-Object FullName | Export-Csv "Q:\Toto\Logs\txt-echo-file$((Get-Date).Year)$((Get-Date).Month)$((Get-Date).Day).log" -NoTypeInformation;
Puis celle-ci pour vos serveurs :
Invoke-Command -ComputerName (Get-Content Q:\Toto\Logs\Serveurs.txt) -ScriptBlock { Get-ChildItem -Path Q:\Toto\Tata\* -Filter *.txt | Select-Object FullName | Export-Csv "Q:\Toto\Logs\txt-echo-file$((Get-Date).Year)$((Get-Date).Month)$((Get-Date).Day).log" -NoTypeInformation }; # Serveurs.txt contient la liste de vos serveurs.
Merci pour votre retour,
Charlie
Charlie Dancoisne - Independent Consultant & Trainer
- Modifié Charlie Dancoisne - SQL - SCCM - Powershell vendredi 3 octobre 2014 01:21
- Marqué comme réponse Boris Ivanov _ jeudi 30 octobre 2014 10:28
Toutes les réponses
-
Vous pouvez faire un script sur le serveur A qui créer une tache planifiée sur le serveur B qui lance le script sur le serveur B.
Si vous voulez entrer dans la modernité, vous regardez Powershell et le Remoting, qui permet d'executer des scripts sur des serveurs distants.
Bruce Jourdain de Coutance - Consultant MVP Exchange http://blog.brucejdc.fr
- Modifié Bruce JDC jeudi 2 octobre 2014 15:20
- Marqué comme réponse Boris Ivanov _ jeudi 30 octobre 2014 10:28
-
Bonsoir,
la création d'un script sur le serveur A qui fait la tache planifié sur le serveur B qui va effectuer lui même le script qui doit se trouver sur B n'est pas la solution que je souhaite dans la mesure où je veux que ma source du script reste sur A. Ou alors il faut que je crée un script qui en 2 étapes, 1 copie la source du script sur le serveur cible et 2 crée la tache planifié qui ira pointer vers la copie de mon dit script fraichement apparu!
Quant au remoting, ça semble quand même assez touchy
vous n'avez rien d'intermediaire?!!
Cdlt
-
Bonjour,
Sans vouloir vous faire succomber dans Windows Powershell, tentez la commande suivante pour votre expérimentation :
Get-ChildItem -Path Q:\Toto\Tata\* -Filter *.txt | Select-Object FullName | Export-Csv "Q:\Toto\Logs\txt-echo-file$((Get-Date).Year)$((Get-Date).Month)$((Get-Date).Day).log" -NoTypeInformation;
Puis celle-ci pour vos serveurs :
Invoke-Command -ComputerName (Get-Content Q:\Toto\Logs\Serveurs.txt) -ScriptBlock { Get-ChildItem -Path Q:\Toto\Tata\* -Filter *.txt | Select-Object FullName | Export-Csv "Q:\Toto\Logs\txt-echo-file$((Get-Date).Year)$((Get-Date).Month)$((Get-Date).Day).log" -NoTypeInformation }; # Serveurs.txt contient la liste de vos serveurs.
Merci pour votre retour,
Charlie
Charlie Dancoisne - Independent Consultant & Trainer
- Modifié Charlie Dancoisne - SQL - SCCM - Powershell vendredi 3 octobre 2014 01:21
- Marqué comme réponse Boris Ivanov _ jeudi 30 octobre 2014 10:28
-
Mhmmm!!
merci pour votre contribution Charlie, néanmoins, cela ne répond pas totalement à mes attentes.
En effet, vous venez dans votre premier ps1 de réécrire mon script forfiles, qui à contrario du mien ne liste mais ne supprime pas le fichier!! Mais le sujet n'est pas là, car ce n'est pas en réalité l'objet de ma demande.
quant au second script, je vais néanmoins essayer de m'en inspirer en y collant en lieu et place du contenu du 1°ps1 le contenu du bat
- Modifié Alexandre Y jeudi 2 octobre 2014 21:01
-
Bonjour,
En effet, j'ai oublié d'inclure la commande de suppression de fichiers que voici :
Invoke-Command -ComputerName (Get-Content Q:\Toto\Logs\Serveurs.txt) -ScriptBlock { Get-ChildItem -Path Q:\Toto\Tata\* -Filter *.txt | Select-Object FullName | Export-Csv "Q:\Toto\Logs\txt-echo-file$((Get-Date).Year)$((Get-Date).Month)$((Get-Date).Day).log" -NoTypeInformation; Remove-Item -Path Q:\Toto\Tata -Filter *.txt -Force }; # Serveurs.txt contient la liste de vos serveurs.
La version ci-dessous avec des commandes "DOS" que vous connaissez déjà :-)
Invoke-Command -ComputerName (Type Q:\Toto\Logs\Serveurs.txt) -ScriptBlock { Dir Q:\Toto\Tata\*.txt | Select-Object FullName | Export-Csv "Q:\Toto\Logs\txt-echo-file$((Get-Date).Year)$((Get-Date).Month)$((Get-Date).Day).log" -NoTypeInformation; Del Q:\Toto\Tata\*.txt -Force }; # Serveurs.txt contient la liste de vos serveurs.
Charlie Dancoisne - Independent Consultant & Trainer
- Modifié Charlie Dancoisne - SQL - SCCM - Powershell vendredi 3 octobre 2014 01:19
-