
Cikkünkhöz mellékeltük az alábbiakban tárgyalásra kerülő szkriptet "ServicesList.vbs" néven. Futtatásával az aktuális könyvtárban létrehozott "List.csv" fájlba mentjük a telepített szolgáltatásokról gyűjtött információkat.
Első feladatunk, hogy létrehozzuk az adatok tárolására szolgáló CSV fájlt. Ha már létezik az állomány, az adatokat fűzzük hozzá a meglévő tartalomhoz.
Miden fájllal kapcsolatos műveletet a "FileSystemObject" (FSO) osztályon keresztül tudunk végrehajtani, lépjünk tehát kapcsolatba vele.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Nyissuk meg az aktuális könyvtárban lévő "List. csv" fájlt. Ha nem létezik, az FSO létrehozza (True kapcsoló), ha létezik, az új adatokat hozzáfűzzük a meglévőkhöz.
Set objLogFile = objFSO.OpenTextFile("List.csv", ForAppending, True)
Készítünk egy fejlécet a táblázatos megjelenítéshez, ahol az egyes oszlopokban lévő adatok magyarázata szerepel.
objLogFile.Write ("Gépnév,Szolg. név,Típus,Állapot,Kilépései kód,Folyamat ID,Felfüggesztve,Leállítva,Fejléc,Leírás,Interakció a felh. felülettel,Név,Hibaellenőrzés,Elérési út,Elindítva,Indítás módja,fiók")
Beszúrunk egy üres sort és ezzel gyakorlatilag végeztünk a "List.csv" fájl szerkezetének kialakításával, következhet az adatokkal való feltöltés.
A helyi gépre (.) telepített szolgáltatásokat fogjuk feldolgozni, a pontot egy gépnévre vagy IP cserélve, hálózaton keresztül egy másik gép adatait is összegyűjthetjük.
Kapcsolatot kell teremtenünk a WMI (Windows Management Instrumentation) szolgáltatás \root\cimv2 névterével, mert itt található a Win32_Service osztály, mely alkalmas a prioritásváltás elvégzésére.
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Lekérjük az osztály összes objektumát.
Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service")
Egy FOR ciklussal feldolgozzuk az eredményt.
For Each objService in colListOfServices
Egyenként lekérjük a tulajdonságokat és beleírjuk a fájlba, az egyes tagokat vesszővel választjuk el egymástól, ami gondot okozhat olyan szempontból, hogy a hosszabb szöveget tartalmazó adatokban (pl.: a szolgáltatás leírása (description)) is lehet vessző. Példánkban inkább a teljességre törekedtünk, ezért meghagytuk az ilyen tulajdonságokat is, de a gyakorlatban csak ritkán van rájuk szükség, akkor pedig egy másik ugyanilyen ciklussal kell feldolgozni őket.
objLogFile.Write(objService.SystemName) & ","
objLogFile.Write(objService.Name) & ","
objLogFile.Write(objService.ServiceType) & ","
...
objLogFile.writeline
Next
Utolsó lépés a fájl lezárása.