Wie kann ich per Remote-Skript in Windows ausführen?
-
21-08-2019 - |
Frage
Ich möchte einen Windows 2003 Server in Brand habe ein Skript ein weiteres Skript in einem separaten Windows Server abzufeuern 2008-Computer.
Ich habe gesagt, dass Powershell das tun können, und das ist in Ordnung, aber ich brauche mehr Details.
Hat jemand irgendwelche Tipps für das?
Danke!
Lösung
psexec von SysInternals
Andere Tipps
Schauen Sie in die Syntax für den Befehl AT. Sie können es verwenden, um einen Prozess zu planen auf einem entfernten Rechner ausgeführt werden.
Der Befehl AT Pläne Befehle und Programme auf einem Computer ausführen zu eine bestimmte Zeit und Datum. Der Zeitplan-Dienst muss ausgeführt werden, zu verwenden, der AT-Befehl.
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.
einfachste Art und Weise, ist der Einsatz in zwei Schritten sein
a. Installation Cygwin auf Remote-PC
b. laufen ssh hudson @ mcs '/cygdrive/c/path_to_script.bat'
Beim Sprechen über PsExec
, würde ich stark vorschlagen, anstelle von Cygwin / OpenSSH zu verwenden.
SSH hat mehrere Vorteile (über Tools wie PsExec
oder auch maßgeschneiderte Dienstleistungen).
Versuchen Sie zum Beispiel mit PsExec
zu verwenden und implementieren, was diese bash
/ ssh
Befehlszeilen tun:
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
Good Luck!
-
SSH-Transfer (!) Entfernt stdout / stderr / Exit-Status auf local Shell zur Inspektion
(Killer-Feature und häufige Anforderung Remote-Ausführung in der Logik des lokalen Skripte zu integrieren) -
Cygwin / OpenSSH bietet Standard POSIX-Shell-Umgebung
(Effiziente Zeit Investitionen, grundlegende Werkzeuge, Cross-Plattform bereit, kompatibel Gewohnheiten, etc.) -
Sie können immer noch / immer laufen alle nativen Windows-Anwendung
(Einschließlich der automatischen Ausführung von*.bat
Dateien durchcmd
Prozessor) -
Sie können kennwort weniger Auth mit den öffentlichen Schlüsseln konfigurieren
(Denken Sie über die unbeaufsichtigte automatisierte Aufgaben)
Tipp:
Es war eine Forderung hatte ich Probleme mit anfänglich:
Hintergrund sshd
Dienst hatte apps in Benutzers grafische Sitzung
auszuführen
(Um Anwendungsfenster in Desktop-Umgebung angezeigt werden).
Die akzeptable Lösung für mich sshd
Service lief direkt in Benutzer-GUI Sitzung
(Startet automatisch, wenn der Benutzer anmeldet, folgen Sie dem Link, um Konfigurationsdatei Änderungen zu sehen):
/usr/sbin/sshd -f /home/user/sshd_config
Die akzeptierte Lösung von http://www.experts-exchange.com /OS/Microsoft_Operating_Systems/Q_22959948.html ist:
Was bietet mir ein Drehbuch, das dauert Parameter ... In diesem Fall dauert es 4. 1) Server: Wenn Sie -Server passieren, es wird nur tun, dass ein Server 2) Liste: Sie stellt eine Liste Datei-Server kann. 3) Service: Name des Service, den Sie möchten 4) Ausführlich ändern: nicht verwendet hier.
habe ich einige Fehler, die ich im folgenden Code geändert. Benutzen Ausschneiden / Einfügen des Code in eine Datei mit dem Namen Set-RemoteService.ps1. Stellen Sie sicher, dass stellen Sie Ihren executionpolicy laufen Skripte ... es wird nicht standardmäßig aktiviert. Sie tun, dass durch die Verwendung von Set-executionpolicy Cmdlets. PS> Set-ExecutionPolicy "RemoteSigned" zu Führen Sie das Skript PS tun> C: \ PathToScript \ Set-RemoteService.ps1 -Liste c: \ serverlist.txt -Dienst "DHCP"
######################### Param ($ Server $ Liste, $ service [Schalter] $ ausführlich)if ($ Verbose) {$ VerbosePreference = "Weiter"} if ($ list) { foreach ($ SRV in (get-content $ list)) { $ Query = "select * from Win32_Service wo Name = '$ service'" $ MyService = get-WmiObject -query $ query -Computer $ SRV $ MyService.ChangeStartMode ( "Automatic") $ MyService.Start () }} If ($ Server) { $ Query = "select * from Win32_Service wo Name = '$ service'" $ MyService = get-WmiObject -query $ query -Computer $ server $ MyService.ChangeStartMode ( "Automatic") $ MyService.Start ()}