Comment puis-je exécuter à distance un script dans Windows?
-
21-08-2019 - |
Question
Je voudrais avoir un feu de serveur Windows 2003, un script pour tirer un autre script dans un Windows Server 2008 ordinateur séparé.
On m'a dit que Powershell peut le faire, et c'est très bien, mais je dois des détails plus spécifiques.
Quelqu'un at-il des conseils pour cela?
Merci!
La solution
psexec de SysInternals
Autres conseils
Regardez dans la syntaxe de la commande AT. Vous pouvez l'utiliser pour planifier un processus à exécuter sur une machine distante.
Les horaires de commande commandes AT et des programmes à exécuter sur un ordinateur à un moment précis et la date. Le service de planification doit être en cours d'exécution à utiliser la commande AT.
AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
[ /EVERY:date[,...] | /NEXT:date[,...]] "command"
\\computername Specifies a remote computer. Commands are scheduled on the
local computer if this parameter is omitted.
id Is an identification number assigned to a scheduled
command.
/delete Cancels a scheduled command. If id is omitted, all the
scheduled commands on the computer are canceled.
/yes Used with cancel all jobs command when no further
confirmation is desired.
time Specifies the time when command is to run.
/interactive Allows the job to interact with the desktop of the user
who is logged on at the time the job runs.
/every:date[,...] Runs the command on each specified day(s) of the week or
month. If date is omitted, the current day of the month
is assumed.
/next:date[,...] Runs the specified command on the next occurrence of the
day (for example, next Thursday). If date is omitted, the
current day of the month is assumed.
"command" Is the Windows NT command, or batch program to be run.
manière la plus simple qui est l'utilisation sera en deux étapes
a. l'installation de Cygwin à un PC distant
b. exécutez hudson ssh @ s /cygdrive/c/path_to_script.bat 'mcs
En parlant de PsExec
, je fortement suggère d'utiliser à la place Cygwin / OpenSSH.
SSH présente de multiples avantages (sur des outils tels que les services ou même bash
sur mesure).
Par exemple, essayez d'utiliser et mettre en œuvre avec ce que ssh
ces lignes de commande *.bat
/ cmd
font:
ssh user@remotehost "find . -name something" 2> all.errors.txt
ssh user@remotehost "grep -r something ."
if [ "$?" == "0" ]
then
echo "FOUND"
else
echo "NOT FOUND"
fi
Bonne chance!
-
transferts SSH (!) Statut stdout / stderr / sortie à distance locale shell pour inspection
(Fonction tueur et exigence commune d'intégrer l'exécution à distance dans la logique des scripts locaux) -
Cygwin / OpenSSH fournit standard environnement shell POSIX
(Investissement efficace du temps, des outils fondamentaux, les habitudes, prêts compatibles multiplateformes, etc.) -
Vous pouvez toujours / courir toujours tous natif application Windows
(Y compris l'exécution automatique des fichierssshd
par <=> processeur) -
Vous pouvez configurer auth sans mot de passe à l'aide des clés publiques
(Pensez à des tâches automatisées sans surveillance)
Conseil
Il y avait une exigence que j'avais des problèmes avec d'abord:
arrière-plan de service devait <=> exécuter des applications en session graphique de l'utilisateur
(Pour faire la fenêtre d'application apparaissent dans l'environnement de bureau).
Le solution acceptable pour moi dirigeais le service <=> directement session de l'interface graphique de l'utilisateur
(Démarrer automatiquement lorsque l'utilisateur se connecte, suivez le lien pour voir les modifications du fichier de configuration):
/usr/sbin/sshd -f /home/user/sshd_config
La solution acceptée de http://www.experts-exchange.com /OS/Microsoft_Operating_Systems/Q_22959948.html est:
Ce que je fournis est un script qui prend paramètres ... Dans ce cas, il faut 4. 1) Serveur: si vous passez -server il sera ne faites qu'un serveur 2) Liste: Vous peut fournir un fichier de liste des serveurs. 3) Service: Nom du service que vous vouloir modifier 4) verbeux: n'est pas utilisé ici.
J'ai eu quelques erreurs que je changé dans le code suivant. Utiliser couper / coller le code dans un fichier appelé Set-RemoteService.ps1. Assurez-vous de définir votre executionpolicy pour exécuter scripts ... il ne sera pas par défaut. Toi faire en utilisant les set-executionpolicy cmdlet. PS> Set-ExecutionPolicy "RemoteSigned" à exécutez le script que vous faites PS> C: \ PathToScript \ Set-RemoteService.ps1 -list c: \ serverlist.txt -Service "DHCP"
######################### Param ($ server, liste $, $ service, [switch] $ verbeux)if ($ verbose) {$ VerbosePreference = "Continuer"} if (liste $) { foreach (srv $ en (get-content liste $)) { $ Query = "select * from Win32_Service où Name = '$ service'" $ MyService = get-WmiObject -query $ query -ordinateur $ srv myService.ChangeStartMode $ ( "Automatique") myService.Start $ () }} If ($ server) { $ Query = "select * from Win32_Service où Name = '$ service'" $ MyService = get-WmiObject -query $ query -ordinateur serveur $ myService.ChangeStartMode $ ( "Automatique") myService.Start $ ()}