Mi a WSH?
A WSH a Windows parancsfájljainak - vagy gyakrabban használt nevükön szkriptjeinek - futtatására készített feldolgozó motor. Feldolgozza és a rendszer számára értelmezhetővé, futtathatóvá teszi a szkriptek tartalmát. Működése a háttérben történik, sokszor csak egy elírt programsor vagy jogosulatlan hozzáférés miatt keletkezett hibaüzenet erejéig találkozunk vele. A parancsfájlok futtatása történhet a grafikus felületen, például a Windows Intéző (Windows Explorer) segítségével vagy parancssorból a CSCRIPT.EXE használatával. 5.6 előtti verziókban Visual Basic Script (.vbs) és Java Script (.js) nyelveken készülhettek, de a verzióváltás ebben is hozott változást. A 2.0-ról 5.x-re történő váltásnak egyszerű oka van: a két verzió kiadása között évek teltek el és a fejlesztők ezt akarták jelezni a szám ugrással. Ami viszont megfogható tény: számos újdonsággal találkozhatunk a legújabb kiadásban.
Honnan tudjuk meg, hogy milyen verziójú WSH fut a gépünkön?
Indítsunk el egy parancssori ablakot és írjuk be: cscript. A WSH szkriptek futtatókörnyezetének súgóját fogjuk látni, aminek az első sorában szerepel a verziószám.
Hol érhető el a WSH 5.6?
A Windows XP és .NET szerverek beépítve tartalmazzák, de mi van a régebbi operációs rendszerekkel? Windows 98/ME/NT 4.0/2000 rendszerekhez letölthető a http://msdn.microsoft.com/scripting oldaláról.
Újdonságok
Eddig Visual Basic Script (.vbs) és Java Script (.js) szintaxis szerint íródott szkriptek kezelése valósult meg. Az új verzióban már az XML nyelv is belekerült .wsf kiterjesztéssel, a Windows Script File rövidítéseként. Ez magával hozta a XML minden előnyét és nagyon leegyszerűsíti a komplex feladatok megoldását. Egy példa: adott kódba beágyazhatók egyedi, extra információk, akár futtatható fájl vagy külső hivatkozás formájában. Így a részenként megírt modulok egymást használva alkotnak egy nagy egységet. A részek módosítása, eltávolítása nem feltétlenül igényli a többi modul megváltoztatását. Az alkotóelemek helyileg lehetnek a merevlemezen, a hálózaton vagy akár az Interneten is. Élő kapcsolat mellett a felhasználó gyakorlatilag ebből semmit nem vesz észre, míg a programozó távolról bármikor képes az Interneten lévő részt javítani, frissíteni. Lehetőség van egy kódon belüli különböző szintaxis használatára is. Megtehetjük, hogy vegyesen használunk Visual Basic és Java szintaxist.
- Gyermek folyamatok állapotának meghatározása és beavatkozás az I/O adatforgalmukba
A "WSHShell" objektumban található "Exec" metódussal a szabványos StdIn, StdOut, StdErr kimenetekhez hasonlóan kezelhetjük a szkriptek gyermekfolyamatait.
- Emeltszintű biztonsági modell
A WSH eredetileg rendszer adminisztrátorok számára készült, hogy programozási eszközökkel férhessenek hozzá programokhoz. Az alapelv szerint tehát megbízható emberek eszköze volt, amellyel mélységbemenő konfigurációs és információszerzési műveleteket lehetett elvégezni. Mára ez a szerepkör megváltozott. A szkriptvírusok és Interneten keresztüli szkript-manipulációk szükségessé tették a szigorú biztonsági elvek következetes használatát. A WSH 5.6 lehetővé teszi, hogy a rendszergazda explicit módon előírja, mely felhasználók futtathatják a szkriptet és lekezeli a digitális aláírással ellátott állományokat is. A jogosulatlan hozzáférések és futtatások a helyi és a távoli gépen is kizárhatók.
"A" gépen tárolt szkript "B" gépen futtatása. A "WshController" objektum használatával lehet a hálózat egy távoli gépén egy új folyamatot létrehozva futtatni egy helyi szkriptet. Az objektum nem rendelkezik tulajdonságokkal és metódust is csak egyet ismer, a többiről már a WSH gondoskodik. Például:
Set Proba = CreateObject("WshController")
Set Script = Proba.CreateScript(scriptName, RemoteMachine)
Script.Execute
A "scriptName" paraméter a szkript nevét, elérési útját és az esetleges indítási paramétereit tárolja. A "RemoteMachine", pedig a távoli gép neve, relatív elérési úttal.
- Távoli gépen futó szkript felügyelete
A távoli futtatás nem merül ki a szkript elindításában, a "WSHRemote" objektumon keresztül a további felügyelete is megvalósítható. A "Status" tulajdonságon keresztül megtudjuk, hogy még fut-e vagy már befejeződött. Az "Error" tulajdonság a keletkezett hibákat tárolja. A "Terminate" metódussal megszakítható a végrehajtás, stb.
Szkriptek után megadhatók parancssori kapcsolók, amelyek kategóriájuknak megfelelően kerülnek feldolgozásra a "WSHArguments" objektummal.
A szkripten keresztül a felhasználó hozzáférhet az aktuális munkakönyvtárhoz és a szkript által megadott lehetőségekkel módosításokat hajthat végre.
Ha a felhasználó beírja a "szkriptnév /?" súgókérési műveletet, egy egyszerű metódus alkalmazásával megjeleníthető számára a szükséges információ. Nincs szükség argumentum feldolgozásra és egyéb programozási fogásra.