Einen Prozess auf einem Remote-PC mit Wmi ausführen

July 31

Einen Prozess auf einem Remote-PC mit Wmi ausführen

WMI (Windows Management Instrumentation) dient zur Steuerung von Managementaufgaben in jeder Windows-Benutzeroberfläche. Die Infrastruktur richtet sich an C/C++-Programmierer, aber es kann durch Programmierer, die mit jedem Windows-kompatiblen Skriptsprache wie VBScript implementiert werden. WMI ist ein leistungsfähiges Werkzeug für administrative Prozesse auf dem lokalen Server, aber es ist besonders nützlich für remote-Rechner. In Reihenfolge für WMI auf einen Remotecomputer zuzugreifen muss der Remotecomputer übergeben Sie die Firewall zulassen.

Anweisungen

1 Festlegen von Berechtigungen auf dem Remotecomputer. Wenn ein Administrator auf "Computer A" auf "Computer B" zugreifen, darf es die Firewall "Computer B". Melden Sie sich bei "Computer B", und öffnen Sie die Eingabeaufforderung. Klicken Sie auf "Start" "Ausführen" und geben Sie "cmd ein. "EXE" und drücken Sie "Enter."

2 Geben Sie Folgendes an der Eingabeaufforderung: "Netsh Firewall set Dienst RemoteAdmin aktivieren" drücken Sie "Enter."

3 Erstellen Sie eine WBI-Locator-Objekt, mit dem folgenden Code:

Set ObjSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

4 Verbindung mit dem Remotecomputer über die "Methode SWbemLocator.ConnectServer." Diese Funktion wird ein "SWbemServices" Objekt zurück, das zum Ausführen von Befehlen über die Remoteverbindung verwendet wird:

ObjwbemServices = SWbemLocator.ConnectServer (_

[ByVal StrServer], _

[ByVal StrNamespace], _

[ByVal StrUser], _

[ByVal StrPassword], _

[ByVal StrLocale], _

[ByVal StrAuthority], _

[ByVal iSecurityFlags], _

[ByVal ObjwbemNamedValueSet] _

)

Wo:

StrServer ist der Name des Remotecomputers.

StrNamespace kann leer gelassen werden.

StrUser ist der Benutzername für die Anmeldung in der remote-Computer verwendet werden.

StrPassword ist das Kennwort für den Benutzer auf dem Remotecomputer.

StrLocale kann leer gelassen werden.

StrAuthority kann auch leer gelassen werden.

iSecurityFlags können (0 x 0) fest, dass das Skript weiterhin eine Verbindung herstellen, bis eine Verbindung hergestellt wird. Die Alternative ist (0 x 80), in diesem Fall wird die Verbindung versucht, zwei Minuten lang zu laden, dann sterben.

ObjwbemNamedValueSet kann leer gelassen werden.

Das Beispiel weiter:

Set ObjWMIService = objSWbemLocator.ConnectServer ("einigeComputer",

, _

"Some_User", _

"Some_Pass", _

"", _

"")5

Führen Sie einen Befehl mit dem "Win32_Process Class." Diese Funktion wird einen Befehl auf dem Remotecomputer ausführen. Verwenden Sie MS-DOS-Syntax, Befehle in dieser Funktion auszuführen:

UInt32 erstellen)

[in] Zeichenfolge CommandLine,

[in] Zeichenfolge CurrentDirectory,

[in] Win32_ProcessStartup ProcessStartupInformation,

[out] uint32 ProcessId

);

Wo:

CommandLine ist die Befehlszeile, die auf dem Remotecomputer ausgeführt werden soll.

CurrentDirectory sollte auf Null gesetzt, es sei denn, es einen Grund gibt, um ein Verzeichnis anzugeben.

Win32_ProcessStartup ProcessStartupInformation sollte das Connection-Objekt. In diesem Fall werden das SWbemLocator.ConnectServer-Objekt, das im vorherigen Schritt erstellt.

ProcessId wird eine globale Variable, die die Prozess-ID für diesen Befehl. Geben Sie einen eindeutigen Variablennamen.

Die Funktion gibt "0", wenn der Vorgang erfolgreich ist. Fehler-Code-Nummern sind für fehlgeschlagene Prozesse zurückgegeben. In unserem Beispiel kann die Funktion geschrieben werden:

Set ObjProcess = objWMIService.Get("Win32_Process")

Int­Return = objProcess.Create _

("Some_Command", Null, objWMIService, intProcessID)

Wenn IntReturn <> 0 dann

Wscript.Echo "Process could not be created." & _

vbNewLine & "Command line: " & strCommand & _

vbNewLine & "Return value: " & intReturn

Sonst

Wscript.Echo "Process created." & _

vbNewLine & "Command line: " & strCommand & _

vbNewLine & "Process ID: " & intProcessID

EndIf

6 Speichern Sie den Code in eine VBScript-Datei (mit der Erweiterung ".vbscript"). Das vollständige Codebeispiel zu einem Remotecomputer herstellen und Ausführen eines Prozesses ist:

Set ObjSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

Set ObjWMIService = objSWbemLocator.ConnectServer ("einigeComputer",

, _

"Some_User", _

"Some_Pass", _

"", _

"")

Set ObjProcess = objWMIService.Get("Win32_Process")

Int­Return = objProcess.Create _

("Some_Command", Null, objWMIService, intProcessID)

Wenn IntReturn <> 0 dann

Wscript.Echo "Process could not be created." & _

vbNewLine & "Command line: " & strCommand & _

vbNewLine & "Return value: " & intReturn

Sonst

Wscript.Echo "Process created." & _

vbNewLine & "Command line: " & strCommand & _

vbNewLine & "Process ID: " & intProcessID

EndIf

7 Maustaste auf den Dateinamen und wählen Sie "Eigenschaften". Aktivieren Sie das Kontrollkästchen "Zulassen Ausführung dieser Datei." Klicken Sie auf "Anwenden". Doppelklicken Sie auf die Datei, um den Prozess zu starten.