Windows - Hálózati megosztások kezelése szkriptekből

forráskód letöltése
Ha a rendszergazdának a hálózat kliens gépein mindenhol ugyanazt a mappamegosztást kell beállítania, legegyszerűbben egy szkript segítségével teheti meg, amit minden gépen futtat. Az alábbiakban megmutatjuk, hogy kell a szkriptet elkészíteni. Ezen felül készítünk egy másodikat, ami kilistázza az adott gép összes megosztását, ebből kiderülhet, hogy van olyan, amelyikről nem is tudtuk hogy létezik, mert egy eldugott almappában található, jókora biztonsági rést hagyva a vírusok számára.
Mellékeltük cikkünkhöz a szóban forgó két szkriptet:
"CreateNewShare.vbs" - Létrehozza a c:\download mappához a "Letöltések" nevű hálózati megosztást és maximum 10 felhasználó számára engedélyezi a hozzáférést. Felhasználása előtt a c:\download mappát létre kell hozni és a szkript első sorában módosítani kell a "ComputerName" változó tartalmát egy valós gépnevet megadva.
"ListShares.vbs" - Kilistázza a szkript első sorában lévő "ComputerName" változóban tárolt számítógép megosztott mappáit.
Mindkét cikkhez tartozik ugyanolyan néven egy batch fájl, ami a CSCRIPT futtatókörnyezeten keresztül elindítja a szkriptet. Indításhoz ezek használata javasolt.
Elsőként nézzük meg az összes megosztás listázásának módját, mert ez az egyszerűbb:
Létrehozunk egy "ComputerName" nevű változót, ahol az ellenőrizendő számítógép nevét tároljuk, így később csak ezt kell átírni. A hálózati megosztások többek között a WINNT szolgáltató (provider) kezelésébe esnek, tehát ki kell építenünk egy csatlakozást hozzá. Minden 32-bites Windows operációs rendszerben elérhetők az alapvető hálózati szolgáltatások munkaállomás és kiszolgáló oldalai is. Kiszolgáló alatt nem a Windows 2000 Server képességeit kell érteni, hanem a szimpla fájl és nyomtatómegosztásokat. WINNT szolgáltatón keresztül a munkaállomás szolgáltatásra LANMANWORKSTATION, a kiszolgáló szolgáltatásra, pedig LANMANSERVER néven lehet hivatkozni. Ha tehát csatlakozunk a WINNT://gépnév/LANMANSERVER tárolóhoz, megkapjuk a hálózat számára megosztott mappák listáját. VBScript-beli megvalósítás a következőképpen néz ki:
ComputerName="Dorothy"
Set Shares = GetObject("WinNT://"+ComputerName+"/LANMANSERVER")
Már csak fel kell dolgoznunk az eredményt egy FOR ciklussal. Egyenként végighaladva a kapott objektumokon írassuk ki a képernyőre a megosztás nevét (Name tulajdonság) és elérési útját (Path tulajdonság).
For Each Share in Shares
    WScript.Echo Share.Name & " = " & Share.Path
Next
Következzék az új megosztások készítése:
Járjunk el hasonlóan, mint az előbb: tároljuk el a kezelendő számítógép nevét a szkript elején egy változóban. Ezenkívül adjuk meg a leendő megosztás elérési útját egy másik változóba. Az útvonalnak léteznie kell, különben sikertelen lesz a futtatás.
ComputerName="Dorothy"
Path="C:\Download"
Következő a hálózati kiszolgáló szolgáltatáshoz csatlakozás az előzővel egyezően.
Set Share = GetObject("WinNT://"+ComputerName+"/LANMANSERVER")
Most viszont nem a LANMANSERVER által tárolt objektumok listájára van szükségünk, hanem létre kell hoznunk egy újat, amit a "Create" metódus meghívásával végezhetünk el. Paraméterként át kell adnunk a "fileshare" sztringet. Ez jelzi, hogy egy új megosztás készítéséről van szó. Utána meg kell adnunk a többi gép számára látható nevet. Nélkülözhetetlen a "Path" tulajdonság beállítása. A megosztás elérési útját tárolja.
Set NewShare = Share.Create("fileshare", "Letöltések")
NewShare.Path = Path
Ezen a ponton akár be is fejezhetnénk a szkriptet, de nézzük meg miként lehet korlátozni a hozzáférések számát. Alapértelmezésben nincs korlát, de a "Sharing" ("Megosztás") tulajdonságlapon található egy "A felhasználók maximális száma" ("Allow this number of users") bejegyzés, ahol megadhatunk egy számot. Amennyiben ennél többen próbálkoznának, nem fognak tudni belépni, írni, olvasni az adott megosztásban. Hasonlít a Windows viselkedése ilyenkor arra az esetre, amikor egy olyan NTFS mappához próbálunk hozzáférni, amihez nincs jogosultságunk - csak hibaüzenetet nem kapunk. Szkriptben a "MaxUserCount" tulajdonság szolgál a korlátozások számának tárolására.

Minden közzétételhez rendelhető megjegyzés (Description). Szkriptből a "Description" tulajdonsággal tudjuk beállítani.
NewShare.MaxUserCount = 10
NewShare.Description = "Software Online példa"
Nem maradt más hátra, mint a megadott értékek visszaírása a rendszerbe. Befejezésül megjelenítünk egy üzenetet a képernyőn.
NewShare.SetInfo 
Wscript.echo "Kész."
Megjegyzés: Ha a megosztási névhez hozzáfűzünk egy $ jelet, rejtett megosztást kapunk, ami nem látszik az Intézőben.