A mellékelt példában két feladatot végzünk el a script-ekkel. Az első feladatban lekérdezzük, hogy a megadott nevű folyamat az adott pillanatban fut-e a rendszerben. A másikban lekérdezzük a számítógép nevét és a hálózati kártya azonosítóját.
Futó process lekérdezése
A WMI parancsállományból történő eléréséhez példányosítanunk kell a WbemScripting.SwbemLocator nevű COM objektumot, majd ennek metódusait meghívva juthatunk a kért adatokhoz.
var Locator = WScript.CreateObject("WbemScripting.SWbemLocator");
Létre kell hoznunk a kapcsolatot a kiszolgáló objektummal.
var service = Locator.ConnectServer();
A kapott objektummal már lekérdezhetjük a szükséges információt. Ahhoz azonban, hogy ezt megtegyük, be kell állítani egy hozzáférési biztonsági szintet, mely most 3.
service.Security_.ImpersonationLevel = 3;
Az alkalmazásunkból futtatott script-nek átadjuk a megadott process-nevet argumentumként, majd ennek felhasználásával képezzük az információ lekérdezéséhez szükséges SQL utasítást, mintha csak egy adattábla rekordját olvasnánk. Fontos, hogy az átadott process-név NÉV.KITERJESZTÉS formátumú legyen.
var list = service.ExecQuery("Select * from Win32_Process where name = '" + args(0)+ "'");
A kapott lista annyiszor tartalmazza az adott process információját, ahány példány fut a process-ből a számítógépen. Ha a lista elemszáma nulla, akkor nincs futó process a megadott néven.
if (list.count == 0)
{
message = "A megadott process <" + args(0) + "> nem fut.";
...
Számítógépnév és hálózati kártya MAC azonosítója
A MAC.js script segítségével kérdezhetjük le ezeket az információkat az alkalmazás MAC feliratú füle alatt az Információ feliratú gombra kattintva.
A példányosítás itt is ugyanúgy történik, mint a fenti esetben.
objLoc = new ActiveXObject("WbemScripting.SWbemLocator");
A kapcsolódás azonban más megoldást igényel. Most a számítógépen konfigurált root\cimv2 névteret érjük el, mely általában az alapértelmezett névtér is.
objService = objLoc.ConnectServer("","root\\cimv2");
Itt is szükséges egy hozzáférési szint megadása:
objService.Security_.impersonationlevel = 3;
Most a lekérdezés karakterlánca nem a Win32_Process adattárból kapja az információkat, hanem a Win32_NetworkAdapterConfiguration adattárból, melynek neve is utal arra, hogy itt tárolódik az összes hálózati konfigurációs beállítás információja.
var query = "select DNSHostName, MACAddress from Win32_NetworkAdapterConfiguration";
A lekérdezés eredményét egy Enumerator objektumban tároljuk.
objEnumerator = new Enumerator(objService.ExecQuery(query));
Majd annak első elemét kinyerve lekérdezzük annak property-jeit.
objInstance = objEnumerator.item();
WScript.Echo("Számítógép neve: " + objInstance.DNSHostName + '\u000D' + "Hálózati kártya MAC azonosítója: " + objInstance.MACAddress);
A megoldás ott is használható, ahol nincs telepítve a .NET Framework, és így nem futtatható az alkalmazásunk, de elérhetjük a Windows Script Host parancsnyelvi futtató rendszert (A Windows 98 verziója óta ez telepítve van.)