Führt Anwendung oder einen Prozess auf einem entfernten Computer
-
21-08-2019 - |
Frage
Ich brauche eine Anwendung oder einen Dienst auf einem Remote-Computer ausgeführt werden. Ich habe Erfolg mit psexec von SysInternals hatte, aber ich bin zu untersuchen und würde gerne Alternativen Compre. Letztendlich wird der Befehl aus einer Delphi-Anwendung ausgeführt werden. Danke, Pieter.
Lösung
Wenn Sie die psexec ähnliche Route folgen wollen, hier ist ein Beispiel (mit C ++) Quelle, genannt xcmd .
Sie können auch das aktualisierte xcmd Projekt herunterladen (jetzt genannt 'The Grim Linkers') von Source.
Im Wesentlichen extrahiert er einen Dienst zur Laufzeit, kopiert es in dem Remote-System, installiert es als Dienst, verbindet sich dann mit ihm (über Named Pipes).
Die andere Option ist WMI integrierte Remote-Ausführung Fähigkeiten zu nutzen. Hier ist ein Beispiel in VBScript, die Sie Delphi konvertieren könnte. Das folgende Beispiel führt Notizblock auf dem Remote-System.
' This script provides a function for executing a command on a remote computer
' This uses WMI and requires that you have administrative righs on the remote machine
'
Dim strComputer, strCommandLineToRun
'change the period to an IP Address or computer name
strComputer = "." 'example: strComputer = "192.168.1.105"
'this is the path to the file on the computer whose name/IP address is stored in the strComputer variable
strCommandLineToRun = "c:\windows\system32\calc.exe"
' This calls the function to run the process on a remote computer
RemoteExecute strComputer,"","",strCommandLineToRun
Function RemoteExecute(strServer, strUser, strPassword, CmdLine)
Const Impersonate = 3
RemoteExecute = -1
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer(strServer, "root\cimv2", strUser, strPassword)
Service.Security_.ImpersonationLevel = Impersonate
Set Process = Service.Get("Win32_Process")
result = Process.Create(CmdLine, , , ProcessId)
If (result <> 0) Then
WScript.Echo "Creating Remote Process Failed: " & result
Wscript.Quit
End If
RemoteExecute = ProcessId
End Function
Andere Tipps
ssh ist eine gute Wahl, wenn Sie empfindliche etwas Streaming sein wird. Es gibt sogar ein paar FOSS sshd-Server für Windows, die auf Cygwin verlassen Sie sich nicht.
Die andere Möglichkeit, die Fenster AT-Befehl der Zeitplan Aufgaben über die Windows-Scheduler zu verwenden sei. Sie können Arbeitsplätze remote mit dem Befehl einreichen, solange Sie Administratorzugriff und der Zeitplan-Dienst ausgeführt wird auf der anderen Maschine. Um die Syntax zu prüfen, öffnen Sie einfach ein CMD-Fenster und geben Sie AT /? .
zum Beispiel etwas auf der Maschine laufen zu lassen um 4 Uhr morgens namens „Server“, geben Sie einfach den Befehl
AT \\server 4:00 "c:\something.bat"