WMI ( Windows Management Instrumentation ) används för att styra förvaltningsuppgifter i alla Windows -gränssnittet . Infrastrukturen är riktad till C /C + + programmerare , men det kan genomföras av programmerare som använder någon Windows - kompatibel skriptspråk , såsom VBScript . WMI är ett kraftfullt verktyg för administrativa processer på den lokala servern , men det är särskilt användbart för fjärrdatorer . För att WMI att komma åt en annan dator , måste fjärrdatorn låta det passera brandväggen . Instruktioner
ett tillstånd
SET på fjärrdatorn . Om en administratör på " Dator A " måste komma " Computer B , " måste det vara tillåtet förbi " Dator B " brandvägg . Logga in " Computer B " och öppna kommandotolken . Klicka på " Start", " Kör ", skriv " CMD.EXE " och tryck på " Enter "
2
Skriv följande i kommandotolken : " . Netsh firewall set tjänsten RemoteAdmin aktivera " och tryck sedan på " Enter ".
3
Skapa en WBI lägesobjekt med följande kod :
Set objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator " )
4
Anslut till fjärrdatorn via " SWbemLocator.ConnectServer Method . " Denna funktion kommer att returnera ett " SWbemServices " objekt , som används för att utföra kommandon via fjärranslutning :
objwbemServices = SWbemLocator.ConnectServer ( _
[ ByVal strServer ] , _
< p> [ ByVal strNamespace ] , _
[ ByVal strUser ] , _
[ ByVal strPassword ] , _
[ ByVal strLocale ] , _
[ ByVal strAuthority ] , _
[ ByVal iSecurityFlags ] , _
[ ByVal objwbemNamedValueSet ] _
) katalog
Var :
strServer är namnet på fjärrdatorn .
strNamespace kan lämnas tomt .
strUser är det användarnamn som ska användas för att logga in på fjärrdatorn .
strPassword är lösenordet för användaren på fjärrdatorn .
strLocale kan lämnas tomt .
strAuthority också kan lämnas tomt . kan ställas in ( 0x0 ) till
iSecurityFlags göra manuset att fortsätta att försöka ansluta förrän en anslutning har upprättats . Alternativet är ( 0x80 ) , i vilket fall anslutningen kommer att försöka ladda i två minuter , sedan dö
objwbemNamedValueSet kan lämnas tomt
För att fortsätta exemplet : . .
Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _
, _
" Some_User " , _
" Some_Pass " , _
" " , _
" " )
5
Kör ett kommando med " Win32_Process klass . " Denna funktion kommer att köra ett kommando på fjärrdatorn . Använd MS - DOS- syntax för att köra kommandon i denna funktion :
uint32 Skapa (
[ i ] string CommandLine ,
[ i ] string currentDirectory ,
[ i ] Win32_ProcessStartup ProcessStartupInformation ,
[ ut ] uint32 ProcessId
) ,
Var :
CommandLine är kommandoraden som ska avrättas på fjärrdatorn .
currentDirectory ska in på null om det inte finns en anledning att ange en katalog .
Win32_ProcessStartup ProcessStartupInformation bör anslutningen objektet . I detta fall kommer det att vara SWbemLocator.ConnectServer objektet skapades i föregående steg .
ProcessId blir en global variabel som innehåller process-ID för detta kommando . Ange ett unikt variabelnamn här .
Funktionen returnerar " 0 " om den blir framgångsrik . Felkodnumren returneras för misslyckade processer . För vårt exempel , kan funktionen skrivas :
Set objProcess = objWMIService.Get ( " Win32_Process " ) katalog
intReturn = objProcess.Create _
( " Some_Command " , null , objWMIService , intProcessID ) katalog p Om intReturn < > 0 Then
wscript.echo " Process kunde inte skapas . " & _
VbNewLine & " Command line : " & strCommand & _
vbNewLine & " Return value : " & intReturn
Else
wscript.echo "Process skapas. " & _
VbNewLine & " Command line : " & strCommand & _
vbNewLine & " Process -ID : " & intProcessID
End If
6
Spara koden i en VBScript -fil ( med filändelsen " . VBScript " ) . Hela kodexempel för att ansluta till en annan dator och köra en process är :
Set objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator " ) katalog
Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _
, _
" Some_User " , _
" Some_Pass " , _
" " , _
" " )
Set objProcess = objWMIService.Get ( " Win32_Process " ) katalog
intReturn = objProcess.Create _
( " Some_Command " , Null , objWMIService , intProcessID ) katalog
Om intReturn < > 0 Then
wscript.echo " Process kunde inte skapas . " & _
VbNewLine & " Command line : " & strCommand & _
vbNewLine & " Return value : " & intReturn
Else
wscript.echo "Process skapas. " & _
VbNewLine & " Command line : " & strCommand & _
vbNewLine & " Process -ID : " & intProcessID
End If
7
Högerklicka på filnamnet och välj " Egenskaper . " Markera rutan för " Tillåt att den här filen . " Klicka på " Apply ". Dubbelklicka på filen för att köra processen .