Windows Management Instrumentation (WMI)
Windows Management Instrumentation - WMI
Sissejuhatus
Windows Management Instrumentation (WMI) on mõeldud andmete ja operatsioonide juhtimiseks skriptide abil ning asendab efektiivselt erinevaid jõudluskontrolli tööriistu. WMI-d võib pidada tsentraliseeritud juhtimis- ja jälgimissüsteemi üheks peamiseks tehnoloogiaks Windows platvormi kasutavatel süsteemidel. WMI tehnoloogia - see on Windowsi jaoks kohandatud ja laiendatud WBEM standart. WMI abil on võimalik näiteks:
- Alustada protsessi kaugarvutil.
- Koostada ajakava protsesside juhtimiseks spetsiifilistel kellaaegadel ja päevadel.
- Teha kaugarvutile eemalt restarti
- Hankida nimekiri tarkvarast, mis on kohalikule või kaugarvutile installeeritud
- Teha päringuid Windowsi logidest nii kohalikul kui ka kaugarvutil
- jne
WMI on kättesaadav kõigis värskemates Windowsi versioonides alates Windows Me-st.
WMI kasutamine süsteemiinfo hankimiseks
WMI abil on võimalik uurida arvutite süsteemiinfot ja on eriti kasulikuks muutub ta info hankimisel üle arvutivõrgu. WMI abil on võimalik mitte ainult saada teavet, vaid ka juhtida erinevaid arvutiressursse (nii riist- kui ka tarkvara, teenuseid ja kasutajakontosid).
WMI kasutamiseks on vajalik koostada skript, mis kasutab WMI skripti teeke ((WMI scripting library). Kasutada võib erinevaid skriptimiskeeli nagu Windows Script Host (WSH), VBScript, Microsoft JScript jne. Skripte on võimalik kirjutada väga erinevate ressursside nagu sündmuste logimise, failisüsteemide, printerite, protsesside ja teenuste, registri seadete, turvaseadete, ajakava jne jälgimiseks.
Näiteks selline lihtne skript kuvab vaba füüsilise mälu suuruse:
strComputer = "." Set objSWbemServices = GetObject("winmgmts:\\" & strComputer) Set colSWbemObjectSet = objSWbemServices.InstancesOf ("Win32_OperatingSystem") For Each objSWbemObject In colSWbemObjectSet Wscript.Echo "Free physical memory: " & objSWbemObject.FreePhysicalMemory & " KB." Next
Tulemus:
Jälgida tuleks seda, milline skriptimootor parajasti arvutis töötab, näiteks WScript kuvab järgmise skriptiga:
strComputer = "." Set objSWbemServices = GetObject("winmgmts:\\" & strComputer) Set colSWbemObjectSet = objSWbemServices.InstancesOf ("Win32_Service") For Each objSWbemObject In colSWbemObjectSet Wscript.Echo "Display Name: " & objSWbemObject.DisplayName & vbCrLf & " State: " & objSWbemObject.State & vbCrLf & " Start Mode: " & objSWbemObject.StartMode Next
ekraanile kõik arvutis töötavad teenused (services), nende seisundi (started või stopped) ja stardirežiimi
<- Selliseid aknaid tuleb ekraanile palju
Otstarbekam on lülituda ümber skriptimootorile Cscript (käsuga: cscript //H:Cscript), mis kuvab tulemuse konsooliaknas:
Järgmine skript küsib arvuti nime ja seejärel uurib selle printereid, protsesse ja protsessori tüüpi. Oluline on siin see, et omades piisavaid õigusi ja sisestades võrguarvuti nime on võimalik uurida ka võrguarvuti omadusi:
computer = inputbox ("Millist arvutit tahad uurida? (Enter sama arvuti puhul)","Computer") set WMI = GetObject("WinMgmts://" & computer) If computer="" then computer = "this computer" List = "" Set objs = WMI.InstancesOf("Win32_Printer") For each obj in objs List = List & obj.Caption & ", " Next List=Left(List, Len(List)-2) MsgBox List,64,"Printerid arvutil " & computer List = "" Set objs = WMI.InstancesOf("Win32_Process") For each obj in objs List = List & obj.Description & ", " Next List=Left(List, Len(List)-2) MsgBox List,64,"Protsessid arvutil " & computer List = "" set objs = WMI.InstancesOf("Win32_Processor") For each obj in objs List = List & obj.Description & ", " Next List=Left(List, Len(List)-2) MsgBox List,64,"Protsessor arvutil " & computer
WMI kasutamine arvuti juhtimiseks
WMI-d saab kasutada analoogselt info pärimisele kasutada arvuti juhtimiseks, st. paljude erinevate teenuste administreerimiseks nagu Active Directory domeeniteenused, ketta- ja perifeeriaseadmed, sündmuste logid, failid, kaustad, failisüsteemid, võrguparameetrid, op.süsteemi alamsüsteemid, jõudlusloendurid (performance counters), printerid, protsessid, registriseaded, turvalisus jne.
WMI koosneb kolmest põhiosast: Common Information Model Object Manager
(CIMOM) ehk WMI teenus, Common Information Model (CIM) repository ehk WMI varamu ja WMI tarnijad (providers)
WMI tarnijad (providers)
WMI tarnijad, nagu näiteks Win32 ja EventLog toimivad vahendajatena CIMOMi ja juhitava ressursi vahel. Tarnijad pärivad informatsiooni WMI-juhitavatelt ressurssidelt ja saadavad seda omalpoolt ressurssidele. Oluline on teada, et WMI päästab suhtlemisel Win32 API-ga keerukamate programmeerimisvõtete kasutamisest, sest WMI tõlgib standartsed käsud keerukamateks käskudeks, millest ka API-d aru saavad.
CIMOM
Common Information Model Object Manager (CIMOM) ehk WMI teenus toimib infovoo vahendajana tarbija ja tarnija vahel. WMI script suunatakse CIMOMi, kus see vahendatakse WMI tarnijale ja küsitakse vastus.
CIM varamu (repository)
CIM varamu nimi on mõneti eksitav, kuna CIM klasside andmeid ei hoita püsivalt, vaid need hangitakse iga kord dünaamiliselt.
WMI klassid
WMI klassid on arvuti füüsiliste omaduste või teenuste väljunditeks. Iga klass võib sisaldada ühe või mitu objekti või juhtumit, kusjuures objektid on varustatud atribuutidega.
WMI klassid on järgnevad:
- Win32 Classes
- WMI Registry Classes
- WMI System Classes
- Monitor Display Classes
- IPMI Classes
- MSFT Classes
- CIM Classes
- Standard Consumer Classes
- MSMCA Classes
Oluline on kontrollida, et antud klass oleks käesolevas Windowsi versioonis toetatud. Nii ei ole näiteks klass Win32_LogicalMemoryConfiguration Windows 7-s kasutusel ja põhjustab skripti käivitamisel veateate.
- WMI C++ Classes
WMI tööriistad
The MOF compiler (MOFComp.exe):
The Managed Object Format (MOF) kompilaator korrastab faili, mis sisaldab 'Managed Object Format' esildisi ja lisab klasse ja klassi objekte, mis on defineeritud CIM varamus.
MOF failid paiknevad kaustas %SystemRoot%\System32\WBEM.
WMI Administrative Tools:
WMI CIM Studio, WMI Object Browser, WMI Event Registration ja WMI Event Viewer.
Põhiline tööriist on WMI CIM Studio kuna see aitab algsete WMI klasside loomisel CIM varamus. CIM studio kasutab veebiliidest kuvamaks infot ja vajab ActiveX-i.
WMI CIM Studio
pakub järgnevaid võimalusi:
- Ühendumine valitud süsteemiga ja liikumine mööda CIM varamut igas kättesaadavas nimeruumis.
- Otsida klasse nime, kirjelduse või parameetrite nimede järgi.
- Vaadata üle antud klassi parameetrid, meetodid ja seosed.
- Vaadata uuritud süsteemi antud klassi omadusi.
- Koostada päringuid WQL keeles.
- Genereerida MOF fail, mis põhineb valitud klassidel.
- Kompileerida MOF fail, et see laadida CIM varamusse
WMI Object Browser
lubab vaadata objekte, muuta parameetrite väärtuseid ja täpsustusi ning käivitada meetodeid.
WMI Event Registration Tool
Lubab konfigureerida püsivaid sündmuste tarbijaid ja luua või vaadata sündmuste tarbijate juhtumeid, filtreid, seoseid ja ajasüsteemide klasse
WMI Event Viewer
Kuvab kõikide juhtumite sündmused registreeritud tarbijatele
WBEMTest.exe:
WBEMTest.exe on WMI testimistööriist, mis kaasneb WMI-ga. Selle tööriista abil saab administraator või arendaja esile kutsuda enamuse graafilisi liideseid, mis kaasnevad WMI-ga API tasemel. (NB! see vahend ei ole ametlikult Microsofti poolt toetatud!)
- Järjestada, avada, luua ja kustutada klasside eksemplare
- Valida nimeruume
- Täita andmete ja sündmuste päringuid
- käivitada klassimeetodeid
- käivitada igat WMI operatsiooni sünkroonselt, asünkroonselt või semi-asünkroonselt
vähemal määral on kasutusel tööriistad ja vahendid nagu WinMgmt.exe, WMIC.exe jne
Viited
Microsoft TechNet ScriptCenter:
WMI klassid:
Täielik ülevaade WMI viidetest:
Koostaja
Einar Kivisalu DK21