WMI (Windows Management Instrumentation) wird verwendet, um Management-Aufgaben in jeder Windows-Oberfläche steuern. Die Infrastruktur ist in C /C + +-Programmierer gedacht, aber es kann von Programmierern mit jeder 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 die Remote- Maschinen. Um für WMI , um eine Remote-Computer zugreifen kann, muss der Remote-Computer ermöglichen es , die Firewall passieren . Anleitung
1
Set Berechtigungen für den Remote-Computer. Wenn ein Administrator auf "Computer A" zugreifen muss "Computer B," muss es vorbei an der "Computer B " Firewall zugelassen werden. Melden Sie sich bei "Computer B " und öffnen Sie die Eingabeaufforderung. Klicken Sie auf " Start", " Ausführen ", geben Sie dann " cmd.exe " ein und drücken Sie "Enter"
2
Geben Sie Folgendes an der Eingabeaufforderung ein: " . Netsh firewall set service RemoteAdmin aktivieren " und drücken Sie dann "Enter".
3
erstellen WBI Locator -Objekt mit dem folgenden Code:
Set objSWbemLocator = CreateObject (" WbemScripting.SWbemLocator " ) auf Twitter 4
an den Remote- Computer über die " SWbemLocator.ConnectServer Methode. " Diese Funktion gibt eine " SWbemServices " -Objekt, das verwendet werden, um Befehle über die Fernverbindung auszuführen :
objwbemServices = SWbemLocator.ConnectServer (_
[ ByVal strServer ] _
< p> [ ByVal strNamespace ] _
[ ByVal strUser ] _
[ ByVal strPassword ] _
[ ByVal strLocale ] _
[ ByVal strAuthority ] _
[ ByVal iSecurityFlags ] _
[ ByVal objwbemNamedValueSet ] _
)
Wo :
strServer ist der Name des Remote-Computers .
strNamespace kann leer gelassen werden .
strUser ist der Benutzername für die Anmeldung am Remote-Computer verwendet werden.
strPassword ist das Kennwort für den Benutzer auf dem Remote-Computer.
strLocale kann leer gelassen werden .
strAuthority kann auch leer gelassen werden.
iSecurityFlags können (0x0 ) eingestellt werden dass das Skript weiterhin versuchen, eine Verbindung , bis eine Verbindung hergestellt wird. Die Alternative ist ( 0x80) , in welchem Fall die Verbindung wird versuchen, für zwei Minuten laden, dann sterben
objwbemNamedValueSet blank
überlassen werden kann , um das Beispiel weiter : . .
< p> Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer ", _
, _
" some_user ", _
" ein_passwort ", _
" ", _
"")
5
Führen Sie einen Befehl mit dem " Win32_Process Klasse . " Diese Funktion ist ein Befehl auf dem Remote- Computer ausgeführt werden. Verwenden Sie MS -DOS -Syntax, um Befehle in dieser Funktion laufen :
uint32 Create (
[ in ] string CommandLine ,
[ in ] string CurrentDirectory ,
< p > [in] Win32_ProcessStartup ProcessStartupInformation ,
[out] uint32 ProcessId
);
Wo :
CommandLine ist die Befehlszeile, die ausgeführt werden soll auf dem entfernten Rechner .
CurrentDirectory sollte auf Null gesetzt , es sei denn es gibt einen Grund , um ein Verzeichnis anzugeben.
Win32_ProcessStartup ProcessStartupInformation sollte die Verbindung Objekt sein. In diesem Fall wird es die SWbemLocator.ConnectServer Objekt im vorherigen Schritt erstellt wurde .
ProcessId wird eine globale Variable, die die Prozess-ID für diesen Befehl zu werden. Geben Sie einen eindeutigen Variablennamen hier .
Die Funktion gibt " 0", wenn der Prozess erfolgreich ist . Fehlercode -Nummern für fehlgeschlagene Prozesse zurückgeführt. Für unser Beispiel kann die Funktion geschrieben werden:
Set objProcess = objWMIService.Get ( " Win32_Process " )
intReturn = _ objProcess.Create
( " Some_Command " null, objWMIService , intProcessID )
Wenn intReturn < > 0 Then
Wscript.Echo "Process konnte nicht erstellt werden . " & _
VbNewLine & " Befehlszeile: " & strCommand & _
vbNewLine & "Return Wert :" & intReturn
Else
Wscript.Echo "Process geschaffen." & _
VbNewLine & " Befehlszeile: " & strCommand & _
vbNewLine & "Process ID :" & intProcessID
End If
6 < p> Speichern Sie den Code in einer VBScript-Datei ( mit der Endung " . VBScript " ) . Der gesamte Code Probe zu einem Remote- Computer anschließen und betreiben ein Prozess ist :
Set objSWbemLocator = CreateObject (" WbemScripting.SWbemLocator " )
Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " _
, _
" some_user ", _
" ein_passwort ", _
" ", _
"")
Set objProcess = objWMIService.Get ( " Win32_Process " )
intReturn = _ objProcess.Create
( " Some_Command " , Null, objWMIService , intProcessID )
< p> Wenn intReturn < > 0 Then
Wscript.Echo "Process konnte nicht erstellt werden . " & _
VbNewLine & " Befehlszeile: " & strCommand & _
vbNewLine & "Return Wert :" & intReturn
Else
Wscript.Echo "Process geschaffen." & _
VbNewLine & " Befehlszeile: " & strCommand & _
vbNewLine & "Process ID :" & intProcessID
End If
7 < p> rechten Maustaste auf den Dateinamen und wählen "Eigenschaften". Aktivieren Sie das Kontrollkästchen "Zulassen der Ausführung dieser Datei . " Klicken Sie auf " Übernehmen". Doppelklicken Sie auf die Datei , um den Vorgang auszuführen.