HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

WMI szkriptgyűjtemény


Példaprogram letöltése

3556 bájt

Az alábbiakban bemutatunk néhány rövid, de hasznos szkriptet. Közös bennük, hogy az operációs rendszer állapotával kapcsolatosak és mindegyik a Windows Management Instrumentation (WMI) szolgáltatástól kéri le az információt. Megtudjuk az operációs rendszer utolsó bekapcsolásának és telepítésének időpontját. Ellenőrizzük, hogy fut-e egy alkalmazás és ha igen, akkor hány példányban? Milyen biztonsági javítások vannak telepítve? Végül kilistázzuk a telepített hálózati hardvereket a hozzájuk tartozó MAC címmel együtt.

Cikkünkhöz mellékeltük az alábbi szkripteket, melyek a következő információkat szolgáltatják:
"InstallDate.vbs" - A Windows telepítésének ideje.
"LastBootUpTime.vbs" - Utolsó rendszerindítás ideje.
"AppRunningCheck.vbs" - Fut a Notepad? Hány példányban?
"Hotfixes.vbs" - Telepített javítócsomagok azonosítója és leírása.
"GetMACAddr.vbs" - Telepített hálózati elemek és MAC címük.
Az operációs rendszer utolsó bekapcsolásának és telepítésének időpontja
Általános adatokat a "Win32_OperatingSystem" osztály tárol az operációs rendszerről. Többek között megkapjuk a telepítés idejét (InstallDate) és az utolsó indítás idejét (LastBootUpTime). A gond csak az, hogy a WMI nehezen értelmezhető formátumban tárolja az adatokat, például a 2002. március 21. 20:08:25 órát a következőképpen: 20020321200825.000000+060. Ezért a "SWbemDateTime" osztályhoz kell fordulnunk segítségért a konverzióhoz. Az osztály "Value" tulajdonságába elhelyezett WMI "datetime" formátumot a "GetVarDate" metódussal alakíthatjuk át értelmezhető adatokká. A metódus egyetlen igaz/hamis paraméterével tudjuk beállítani, hogy helyi idő szerint jelenjen meg az időpont. Az operációs rendszer utolsó bekapcsolásának idejét lekérdező szkript:
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
for each os in GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
    dateTime.Value = os.LastBootUpTime
    MsgBox "Utolsó bekapcsolás ideje: " & dateTime.GetVarDate (false)
next
Kevés módosítással megtudhatjuk a telepítés időpontját is. Nem kell mást tenni, mint a "LastBootUpTime" tulajdonságot "InstallDate"-ra cserélni:
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
for each os in GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
    dateTime.Value = os.InstallDate
    MsgBox "Telepítés ideje: " & dateTime.GetVarDate (false)
next
Alkalmazás futásának ellenőrzése
Egy alkalmazás futását úgy ellenőrizhetjük, hogy megnézzük szerepel-e a neve a futó folyamatok között. Ahány példányban lett indítva, annyiszor kell megtalálnunk a nevet. A WMI a folyamatokhoz a "Win32_Process" osztályon keresztül engedi hozzáférni a felhasználót és a "Name" tulajdonságban tárolja az alkalmazás nevét. Kérdezzük le, hogy a Jegyzettömb (Notepad) el lett-e indítva és ha igen akkor hány példányban? A példányszámot a "Count" tulajdonság tartalmazza.
set list = getobject("winmgmts:").Execquery("select * from Win32_Process where name='Notepad.exe'")
If list.count > 0 Then
    Wscript.Echo "A Notepad " & list.count & " példányban fut."
Else
    Wscript.Echo "A Notepad nem fut."
End If
Telepített biztonsági javítások (HotFixes)
A HFNETCHK segédprogrammal lehet ellenőrizni a rendszerbe telepített biztonsági javításokat, de honnan tudja, hogy melyik van telepítve? Mi is megtudhatjuk és még a HFNETCHK-ra sincs szükségünk, egyenesen a WMI szolgáltatja számunkra az információt a "Win32_QuickFixEngineering" osztályon keresztül. Kérjük le az összes példányát és írjuk ki a "HotFixID" és "Description" tulajdonságokat. Minden javítást egy azonosítóval láttak el (HotFixID), nem csak a rendszerben, hanem a Microsoftnál is ezzel lehet hivatkozni rá. A "Q309521" és "Q311889" számok nem mondanak sokat, ezért írassuk ki mellé a csatolt leírást (Description) is - ha van.
HotFixes=""
Set htfixset = GetObject("winmgmts:").ExecQuery("select * from Win32_QuickFixEngineering")
for each htfix in htfixset
 HotFixes=HotFixes + htfix.HotFixID + "  " + htfix.Description + Chr(13)
next
 WScript.Echo HotFixes
MAC címek lekérdezése
A MAC címek egy hálózati eszközt az egész világon egyedileg azonosítanak, nincs két egyforma címmel rendelkező. Ez jó alap egy rendszergazda számára, hogy csak az adott címmel rendelkező gépekkel engedjen, például egy proxy kiszolgálón keresztül hozzáférni az Internethez. A WMI a rendszer szinte minden létező tulajdonságáról tárol információt, nincs ez másként a hálózati adapterekkel sem. Soron következő osztályunk neve "Win32_NetworkAdapter", lekérdezendő tulajdonságai: "MACAddress", amely a MAC címet és "Description", amely az eszköz nevét tárolja.
MAC=""
Set NetAdapterSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_NetworkAdapter")
for each NetAdapter in NetAdapterSet
   MAC=MAC & NetAdapter.Description & "   " & NetAdapter.MACAddress & chr(13)
next
 Wscript.Echo MAC

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 269. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |