Slik kjører du en prosess på en ekstern PC med WMI

Slik kjører du en prosess på en ekstern PC med WMI


WMI (Windows Management Instrumentation) brukes for å kontrollere lederoppgaver i alle Windows-grensesnittet. Infrastrukturen er rettet mot C / C ++ programmerere, men det kan bli implementert av programmerere som bruker noen Windows-kompatible skriptspråk, som VBScript. WMI er et kraftig verktøy for administrative prosesser på den lokale server, men det er spesielt nyttig for eksterne maskiner. For at WMI å få tilgang til en ekstern datamaskin, må den eksterne datamaskinen la det passere brannmuren.

Bruksanvisning

1 Angi tillatelser på den eksterne datamaskinen. Hvis en administrator på "Computer A" må ha tilgang til "Computer B," det må være lov forbi "Computer B" brannmur. Logg inn i "Computer B" og åpne ledeteksten. Klikk "Start", "Run", skriv "CMD.EXE" og trykk "Enter".

2 Skriv inn følgende ved ledeteksten: ". Enter" "netsh firewall set tjeneste Remote aktiver" trykk

3 Lag en WBI locator objekt med følgende kode:

Sett objSWbemLocator = Create ( "WbemScripting.SWbemLocator")

4 Koble til den eksterne datamaskinen via "SWbemLocator.ConnectServer Method". Denne funksjonen vil returnere en "SWbemServices" objekt, som brukes til å utføre kommandoer via den eksterne tilkoblingen:

objwbemServices = SWbemLocator.ConnectServer (_

[ByVal strServer] _

[ByVal strNamespace] _

[ByVal strUser] _

[ByVal strPassword] _

[ByVal strLocale] _

[ByVal strAuthority] _

[ByVal iSecurityFlags] _

[ByVal objwbemNamedValueSet] _

)

Hvor:

strServer er navnet på den eksterne datamaskinen.

strNamespace kan stå tomt.

strUser er brukernavnet som skal brukes til å logge på den eksterne datamaskinen.

strPassword er passordet for brukeren på den eksterne datamaskinen.

strLocale kan stå tomt.

strAuthority kan også stå tomt.

iSecurityFlags kan settes til (0x0) for å gjøre manuset fortsetter å forsøke å koble til en tilkobling er opprettet. Alternativet er (0x80), i hvilket tilfelle forbindelsen vil forsøke å laste inn i to minutter, deretter dør.

objwbemNamedValueSet kan stå tomt.

For å fortsette eksempelet:

Sett objWMIService = objSWbemLocator.ConnectServer ( "Noen

Computer",

, _

"Some_User", _

"Some_Pass", _

"", _

"") 5 Kjør en kommando med "Win32_Process Class." Denne funksjonen vil kjøre en kommando på den eksterne datamaskinen. Bruk MS-DOS syntaks å kjøre kommandoer i denne funksjonen:

uint32 Opprett (

[I] string Command,

[I] string CurrentDirectory,

[I] Win32_ProcessStartup ProcessStartupInformation,

[Ut] uint32 ProcessId

);

Hvor:

Command blir kommandoen som skal utføres på den eksterne maskinen.

CurrentDirectory bør settes til Null mindre det er en grunn til å angi en katalog.

Win32_ProcessStartup ProcessStartupInformation bør være tilkoblingsobjektet. I dette tilfellet, vil det bli opprettet SWbemLocator.ConnectServer gjenstand i det foregående trinn.

ProcessId vil bli en global variabel som inneholder prosess ID for denne kommandoen. Angi et unikt variabelnavn her.

Funksjonen returnerer "0" hvis prosessen er vellykket. Feilkodene blir returnert for mislykkede prosesser. For vårt eksempel, kan funksjonen skrives:

Sett objProcess = objWMIService.Get ( "Win32_Process")

intReturn = objProcess.Create _

("Some_Command", Null, objWMIService, intProcessID)

Hvis intReturn <> 0 Then

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

vbNewLine & "Command line:" & strCommand & _

vbNewLine & "Return verdi:" & intReturn

Ellers

Wscript.Echo "Process created." & _

vbNewLine & "Command line:" & strCommand & _

vbNewLine & "Prosess-ID:" & intProcessID

Slutt om

6 Lagre koden i en VBScript-fil (med filtypen ".vbscript"). Hele kodeeksempel for å koble til en ekstern datamaskin og kjøre en prosess er:

Sett objSWbemLocator = Create ( "WbemScripting.SWbemLocator")

Sett objWMIService = objSWbemLocator.ConnectServer ( "Noen

Computer",

, _

"Some_User", _

"Some_Pass", _

"", _

"")

Sett objProcess = objWMIService.Get ( "Win32_Process")

intReturn = objProcess.Create _

("Some_Command", Null, objWMIService, intProcessID)

Hvis intReturn <> 0 Then

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

vbNewLine & "Command line:" & strCommand & _

vbNewLine & "Return verdi:" & intReturn

Ellers

Wscript.Echo "Process created." & _

vbNewLine & "Command line:" & strCommand & _

vbNewLine & "Prosess-ID:" & intProcessID

Slutt om

7 Høyreklikk på filnavnet og velg "Properties". Kryss av i boksen for "Tillat kjøring av denne filen." Klikk på "Apply". Dobbeltklikk på filen for å kjøre prosessen.