WMI ( Windows Management Instrumentation ) wordt gebruikt voor het beheer van taken in elke Windows-interface te controleren . De infrastructuur is gericht op C /C + + -programmeurs , maar het kan door programmeurs met behulp van een Windows - compatibele scripttaal zoals VBScript worden geïmplementeerd . WMI is een krachtig hulpmiddel voor de administratieve processen op de lokale server , maar het is vooral handig voor externe computers . Om WMI toegang tot een externe computer , moet de computer op afstand toelaten om de firewall passeren . Instructies Machtigingen instellen 1 op de externe computer . Als een beheerder op " Computer A " nodig heeft om toegang te krijgen tot " computer B , " het moet voorbij de ' Computer B "firewall toegestaan . Log in op " Computer B " en open de opdrachtprompt . Klik op ' Start ', ' Uitvoeren, " typ " CMD.EXE "en druk op " Enter " Type 2 het volgende bij de opdrachtprompt : " . Netsh firewall set dienst RemoteAdmin staat " en druk vervolgens op " Enter ". 3 Maak een WBI locator object met de volgende code : Set objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator " ) op Twitter 4 verbinding met de externe computer via de " SWbemLocator.ConnectServer methode . " ObjwbemServices = SWbemLocator.ConnectServer ( _ [ ByVal strServer ] , _ < : deze functie zal een " SWbemServices " object , dat wordt gebruikt om opdrachten uit te voeren over de externe verbinding terug p > [ ByVal strNamespace ] _ [ ByVal strUser ] _ [ ByVal strWachtwoord ] _ [ ByVal strLocale ] , _ , , , [ ByVal strAuthority ] _ [ ByVal iSecurityFlags ] _ [ ByVal objwbemNamedValueSet ] _ ) op , , Waar : strServer is de naam van de externe computer . strNamespace kan leeg gelaten worden . strUser is de gebruikersnaam die moet worden gebruikt voor het inloggen op de computer op afstand . strWachtwoord is het wachtwoord voor de gebruiker op de externe computer . strLocale kan leeg gelaten worden . strAuthority kan ook leeg gelaten worden . iSecurityFlags kan worden ingesteld op ( 0x0 ) te maken, het scenario blijven proberen te verbinden totdat er een verbinding tot stand is gebracht . Het alternatief is ( 0x80 ) , in welk geval de verbinding zal proberen om te laden voor twee minuten , dan sterven objwbemNamedValueSet kan worden leeg gelaten Om het voorbeeld te blijven : . . Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _ , _ " Some_User " , _ " Some_Pass " , _ " " _ , " " ) 5 Voer een commando met de " Win32_Process klasse . " Deze functie zal een opdracht uitvoeren op de externe computer . Gebruik MS - DOS- syntax om opdrachten uit te voeren in deze functie : uint32 Maken ( [ in ] touwtje CommandLine , [ in ] touwtje CurrentDirectory , [ in ] Win32_ProcessStartup ProcessStartupInformation , [ out ] uint32 procesid ) ; Waar : CommandLine is de command line , dat uitgevoerd moet worden op de externe machine . CurrentDirectory moet worden ingesteld op Null , tenzij er een reden is om een map op te geven . Win32_ProcessStartup ProcessStartupInformation moet de verbinding object zijn. In dit geval zal het de SWbemLocator.ConnectServer object gemaakt in de vorige stap zijn. Procesid zal een globale variabele met het proces-ID voor deze opdracht geworden . Voer een unieke naam van de variabele hier . De functie geeft " 0 " als het proces succesvol is . Foutcode nummers worden geretourneerd voor mislukte processen . Voor ons voorbeeld , kan de functie worden geschreven : Set objProcess = objWMIService.Get ( " Win32_Process " ) intReturn = objProcess.Create _ ( " Some_Command " , null , objWMIService , intProcessID ) op Twitter Als intReturn < > 0 Then Wscript.Echo " Process kon niet worden aangemaakt . " & _ VbNewLine & " Command line : " & strCommand & _ vbNewLine & " Return waarde : " & intReturn Else Wscript.Echo " Process gecreëerd . " & _ VbNewLine & " Command line : " & strCommand & _ vbNewLine & " Proces-ID : " & intProcessID End Als 6 Sla de code in een VBScript -bestand ( met extensie " . vbscript " ) . De hele voorbeeldcode om verbinding met een externe computer en uitvoeren van een proces is : Set objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator " ) Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _ , _ " Some_User " , _ " Some_Pass " , _ " " , _ " " ) Stel objProcess = objWMIService.Get ( " Win32_Process " ) intReturn = objProcess.Create _ ( " Some_Command " , Null , objWMIService , intProcessID ) op Als intReturn < > 0 Then Wscript.Echo " proces kon niet worden aangemaakt . " & _ VbNewLine & " Command line : " & strCommand & _ vbNewLine & " Return waarde : " & intReturn Else Wscript.Echo " Process gecreëerd . " & _ VbNewLine & " Command line : " & strCommand & _ vbNewLine & " Proces-ID : " & intProcessID End Als 7 rechtermuisknop op de bestandsnaam en kies 'Eigenschappen'. Vink het vakje voor "Allow uitvoering van dit bestand . " Klik op 'Toepassen'. Dubbelklik op het bestand om het proces uit te voeren.
|