Windows Management Instrumentation (WMI)

From ICO wiki
Jump to navigationJump to search

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
  • WMI C++ 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 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