WMI (Windows Management Instrumentation ) brukes for å kontrollere administrasjonsoppgaver i alle Windows- grensesnittet. Infrastrukturen er rettet mot C /C + + programmerere , men det kan implementeres av programmerere å bruke hvilken som helst Windows - kompatibel skriptspråk , som VBScript. WMI er et kraftig verktøy for administrative prosesser på lokal server , men det er spesielt nyttig for eksterne maskiner . For at WMI til å få tilgang til en ekstern datamaskin , må den eksterne datamaskinen lar det passere brannmuren. Instruksjoner
en
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 "Computer B" og åpne ledeteksten . Klikk " Start", " Kjør" skriv " CMD.EXE " og trykk " Enter"
2
Skriv inn følgende ved ledeteksten : " . Netsh firewall set tjeneste RemoteAdmin aktiver" og trykk deretter på "Enter".
3
Lag en WBI locator objekt med følgende kode :
Set objSWbemLocator = CreateObject ( " 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 over ekstern tilkobling :
objwbemServices = SWbemLocator.ConnectServer (_
[ ByVal strServer ] , _
< p> [ 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 inn på ekstern datamaskin.
strPassword er passordet for brukeren på den eksterne datamaskinen .
strLocale kan stå tomt .
strAuthority kan også være tomt .
iSecurityFlags kan settes til ( 0x0 ) til gjøre skriptet fortsette å forsøke å koble til en tilkobling er opprettet . Alternativet er ( 0x80 ) , i hvilket tilfelle forbindelsen vil forsøke å laste i to minutter , så dør
objwbemNamedValueSet kan stå tomt
å fortsette eksempel: . .
< p> Set objWMIService = objSWbemLocator.ConnectServer ( " Some_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 : en
uint32 Opprette (
[ i ] string CommandLine , etter
[ i ] string CurrentDirectory , etter < p > [ i ] Win32_ProcessStartup ProcessStartupInformation , etter
[ ut ] uint32 ProcessId
) ;
Hvor:
CommandLine blir kommandoen som skal utføres på den eksterne maskinen .
CurrentDirectory bør settes til null med mindre det er en grunn til å angi en katalog .
Win32_ProcessStartup ProcessStartupInformation bør være forbindelsen objektet . I dette tilfellet vil det være SWbemLocator.ConnectServer objektet ble opprettet i forrige 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. Feilkoder blir returnert for mislykkede prosesser . For vårt eksempel , kan funksjonen skrives:
Set objProcess = objWMIService.Get ( " Win32_Process ")
intReturn = objProcess.Create _
( " Some_Command " , null, objWMIService , intProcessID )
p Hvis intReturn < > 0 Then
Wscript.Echo " Process kunne ikke opprettes . " & _
VbNewLine & " Command line :" & strCommand & _
vbNewLine & " Return verdi: " & intReturn
Else
Wscript.Echo " Process opprettet. " & _
VbNewLine & " Command line :" & strCommand & _
vbNewLine & " Prosess-ID :" & intProcessID
End If
6 < p> Lagre kode i en VBScript fil (med filtypen " . VBScript ") . Hele koden prøven for å koble til en ekstern datamaskin og kjøre en prosess er : en
Set objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator ")
Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _
, _
" Some_User ", _
" Some_Pass ", _
"", _
"")
Sett objProcess = objWMIService.Get ( " Win32_Process ")
intReturn = objProcess.Create _
( " Some_Command " , Null, objWMIService , intProcessID )
< p> Hvis intReturn < > 0 Then
Wscript.Echo " Process kunne ikke opprettes . " & _
VbNewLine & " Command line :" & strCommand & _
vbNewLine & " Return verdi: " & intReturn
Else
Wscript.Echo " Process opprettet. " & _
VbNewLine & " Command line :" & strCommand & _
vbNewLine & " Prosess-ID :" & intProcessID
End If
7 < p> Høyreklikk på filen og velg "Properties". Kryss av i boksen for "Tillat gjennomføring av denne filen." Klikk på " Apply". Dobbeltklikk på filen for å kjøre prosessen .