
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