Inhoud 13 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.1.5 13.1.6 13.1.7 13.2 13.2.1 13.3 13.3.1 13.3.2 13.3.3 13.3.4 13.3.5 13.3.6 13.4 13.4.1 13.4.2 13.4.3 13.5 13.6 13.7 13.7.1 13.7.2 13.8 13.8.1 13.8.2 13.8.3 13.8.4 13.9 13.9.1 13.9.2 13.9.3 13.9.4 13.9.5 13.10 13.10.1 13.10.2 13.10.3 13.10.4 Scripts en Windows Scripting Host ......................................................................... 239 Windows Scripting Host.................................................................... 239 Labo 72: Installatie van WSH ............................................................ 239 Teksteditor ..................................................................................... 240 Debugger ....................................................................................... 240 Help voor WSH................................................................................ 241 Labo 73: Uitvoering van een script met WSH ...................................... 242 Labo 74: WSCRIPT en CSCRIPT......................................................... 243 Scripting versus MS-DOS batchbestanden .......................................... 246 Scripts voor systeembesturing .......................................................... 246 Labo 75: Objectbibliotheken in Microsoft Script Editor .......................... 246 Het WSH Object Model ..................................................................... 248 Het WScript-object .......................................................................... 250 Labo 76: Het WScript-object ............................................................. 250 Het WScript.Shell object................................................................... 251 Labo 77: Het WScript.Shell object ..................................................... 252 Het WScript.Network object .............................................................. 255 Labo 78: het WScript.Network object ................................................. 255 Het FileSystemObject Object Model ................................................... 256 Labo 79: Het FileSystemObject object en de eigenschap Drives............. 257 Labo 80: Manipulatie van mappen en bestanden ................................. 258 Labo 81: De objecten Folder, File en TextStream................................. 259 Labo 82: Automation ....................................................................... 260 Labo 83: Scripts plannen met Taakplanner ......................................... 262 Overzicht........................................................................................ 265 WSH Object Model ........................................................................... 265 Het FileSystemObject Object Model ................................................... 268 Netwerkbesturing ............................................................................ 272 ADSI.............................................................................................. 272 Een directory .................................................................................. 273 Namespaces en schema's ................................................................. 273 Werken met objecten in ADSI ........................................................... 273 Het Windows NT 4 schema ............................................................... 275 WinNT objecthiërarchie .................................................................... 275 Labo 84: Voorbeeld ......................................................................... 278 Labo 85: Informatie opvragen........................................................... 278 Labo 86: Gebruikersaccounts creëren ................................................ 279 Labo 87: Bewerkingen met gebruikers en groepen............................... 280 Het Windows 2000 Schema .............................................................. 280 Labo 88: Win2000 objecthiërarchie.................................................... 280 Labo 89: Informatie opvragen........................................................... 282 Labo 90: Gebruikersaccounts creëren ................................................ 283 Labo 91: Gebruikersaccounts bewerken met LDAP............................... 285 13 Scripts en Windows Scripting Host 13.1 Windows Scripting Host Windows Scripting Host (WSH) is software, geïntegreerd in Windows, die scripts kan verwerken. Net zoals de browser IE, kan WSH ook verschillende scripttalen aan. In deze cursus wordt WSH gebruikt om VBScripts uit te voeren die Windows zelf besturen. WSH wordt standaard door Microsoft geleverd met een engine voor VBScript en JScript. Als je een andere taal wilt gebruiken, moet je hiervoor een specifieke engine installeren en registreren. Door de integratie met de COM-architectuur kun je op een eenvoudige manier zeer krachtige scripts schrijven. Je kunt bewerkingen doen op bestanden, mappen en schijfeenheden vanuit een grafische omgeving, je hebt toegang tot het bureaublad, het register, de componenten van een netwerk zoals gebruikers en groepen met hun toegangsrechten en nog veel meer. Een script voor systeembeheer dat in VBScript geschreven is, geef je standaard extensie .vbs omdat deze extensie gekoppeld is aan WSH. Het is tekstdocument waarin een opeenvolging van VBScript-instructies staat. De opdrachten voor systeembeheer zijn verwerkbaar door WSH, maar niet door Internet Explorer. Webpagina's zouden hierdoor immers heel onveilig worden. De enige manier waarop je de harde schijf vanuit een script in een webpagina kunt bereiken is via de eigenschap Cookie van het document-object. De mogelijkheden hiervan zijn erg beperkt (Zie ASP). Let wel op bij emailbijlagen met vbs-extensie: ze kunnen gevaarlijke instructies bevatten! Het “I Love you”-virus was niets meer dan zo’n script dat uitgevoerd werd door de WSH. Systeembesturingsscripts zijn vergelijkbaar met batchbestanden voor DOS. Je hebt echter veel meer mogelijkheden dan onder DOS. Je kunt rechtstreeks contact leggen met objecten uit alle geïnstalleerde toepassingen. Je kunt bijvoorbeeld een nieuw Worddocument aanmaken en daar reeds een tekst in plaatsen samen met een figuur. 13.1.1 Labo 72: Installatie van WSH WSH in standaard voorzien vanaf Windows 98 en vanaf Win NT4, SP4 en wordt ook geïnstalleerd bij een standaardinstallatie van de recente versies van een besturingssysteem van Microsoft. Onder Windows 98 vind je dit onderdeel terugvinden onder Configuratiescherm, Software, Windows Setup, waar het deel uitmaakt van de Bureau-accessoires. De Windows Scripting Host (WSH) is beschikbaar voor Windows 95 en Windows NT 4 als add-in. Dit wil zeggen dat het programma niet standaard in het besturingssysteem aanwezig is, maar dat je het afzonderlijk moet installeren. De nieuwste versie en heel wat informatie vind je op de website http:/msdn.microsoft.com/scripting/ (MSDN Library, Web Development, Scripting). WSH wordt ter beschikking gesteld in twee modules: CScript.exe (standaard in map Windows\Command) en WScript.exe (standaard in map Windows). Voor een vergelijking, zie paragraaf 13.1.6) VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 239 Je kunt de versie van WSH van jouw computer nakijken door de eigenschappen van de bestanden cscript.exe en wscript.exe te bekijken. Vergelijk deze versie met de laatste versie die door Microsoft ter beschikking wordt gesteld. Indien je niet over de meest recente versie beschikt is het aan te raden de bestanden te vervangen door een recentere versie. Maak dit in orde voor zowel de server als de client. 13.1.2 Teksteditor VBScript beschikt (nog) niet over een eigen ontwikkelomgeving. Veel VBScriptprogrammeurs gebruiken een eenvoudige tekstverwerker. Je tekstverwerker mag heel eenvoudig zijn, maar vermeldt wel best regelnummers, aangezien bij foutmeldingen hiernaar verwezen wordt. Kladblok heeft meer dan genoeg mogelijkheden, maar heeft het nadeel dat je slechts één bestand tezelfdertijd kunt behandelen. Een eenvoudige oplossing is gebruik te maken van een iets uitgebreidere editor dan kladblok, maar zonder veel toeters en bellen. Editpad Classic is een postcardware pakket maar biedt heel wat mogelijkheden, onder andere voor meerdere documenten. Je kunt het pakket downloaden van www.editpadclassic.com. Je kunt ook werken met meer professionele editors, maar de keuze is geheel aan de programmeur. Microsoft Script Editor is gemaakt voor het editeren van html-pagina's. Toch kan het soms ook handig zijn hierin je scripts voor systeembesturing te schrijven. De editor heeft immers het grote voordeel dat hij beschikt over Intellisense, toch wel handig als je nog niet zo vertrouwd bent met de eigenschappen en methoden van de objecten die je gebruikt in het script! Als je een script ontwikkelt met Microsoft Script Editor moet het wel telkens genesteld worden binnen html-tags. Eenmaal het script klaar, kopieer je het naar bijvoorbeeld kladblok en bewaar je het met extensie vbs. Onafhankelijk van de gebruikte editor, besteed je steeds aandacht aan stijlvol programmeren. Dit wil o.a. zeggen: alle variabelen declareren (Option Explicit), voldoende commentaar schrijven, inspringen enz. 13.1.3 Debugger Microsoft Script Debugger kan ook gebruikt worden voor het debuggen van scripts voor systeembesturing. Niet alle scripts kunnen op die manier gedebugged worden. IE kent VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 240 immers niet alle objecten die ondersteunt worden door WSH en gebruik van een nietondersteund object, bijvoorbeeld WScript, leidt tot een foutmelding. Voor debugging-doeleinden is het dan ook dikwijls nuttig tijdens de ontwikkelingsfase van het script hierin veel uitvoerinstructies te voorzien die bijvoorbeeld de inhoud van een variabele tonen. Deze instructies kunnen dan bij een werkend script verwijderd worden. 13.1.4 Help voor WSH Op de website http://msdn.microsoft.com/scripting/ (MSDN Library, Web Development, Scripting, Windows Script Host Documentation), vind je informatie over WSH en het maken van scripts voor systeembesturing. Er bestaat ook een goed uitgewerkte website met voorbeelden en uitleg bij het gebruik van VBScript in combinatie met WSH. Je vindt deze op http://scripting.winguides.com. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 241 13.1.5 Labo 73: Uitvoering van een script met WSH Schrijf het volgende script in bijvoorbeeld Kladblok en bewaar het als Voorbeeld.vbs. Je kunt het bovenstaande script op vele manieren laten uitvoeren door WSH. Hieronder worden hiervan enkele besproken. Methode 1 Je opent Verkenner en je dubbelklikt op het bestand. Als resultaat krijg je het volgende dialoogvenster. In dit geval is het WScript.exe die het werk doet, want deze module is gekoppeld aan bestanden met extensie .vbs. (Je kunt dit nakijken via menuoptie Beeld, Mapopties van Verkenner in het tabblad Bestandstypen.) Methode 2 Je opent een MS-DOS venster en kiest de map waarin het bestand Voorbeeld.vbs staat als actieve map. Je geeft de instructie wscript voorbeeld.vbs. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 242 Als resultaat krijg je hetzelfde dialoogvenster. Dit werkt niet indien je de computer in MS-DOS modus opstart omdat WSH deel uitmaakt van het besturingssysteem Windows en slechts geladen wordt bij het opstarten van de grafische gebruikersinterface. Methode 3 Je doet hetzelfde als in methode 2 maar met de instructie cscript voorbeeld.vbs. Je krijgt behalve het dialoogvenster ook een melding in het DOS-venster zoals hieronder te zien is. Microsoft (R) Windows Script Host versie 5.6 Copyright (C) Microsoft Corporation 1996-2001. Alle rechten voorbehouden. 13.1.6 Labo 74: WSCRIPT en CSCRIPT Beide modules hebben ongeveer dezelfde functionaliteit, maar zijn gebouwd voor een andere omgeving. CScript is gemaakt voor scripts uitgevoerd in de MS-DOS omgeving (de C staat voor Console) terwijl WScript specifiek gericht is op de Windows-omgeving. Zoals je in vorige paragraaf gezien hebt kunnen beide engines in elkaars omgeving werken. WScript is de standaard engine. • CScript CScript is geschikt voor lichte, niet interactieve taken. Met opties kun je aangeven hoe een script moet uitgevoerd worden. Je kunt ook argumenten doorgeven aan het script. De volledige syntaxisregel is: cscript scriptnaam [opties…][argumenten …] De belangrijkste opties zijn de volgende. // ? //B //I //H:Cscript //H:WScript //Logo //Nologo //S //T:nn Toont de mogelijkheden (opties) van de instructie Het script wordt uitgevoerd in batchmode, gebruikersinvoer wordt verhinderd. Eventuele foutmeldingen worden niet getoond. Het script wordt uitgevoerd in interactieve mode uit (dit is de standaard), gebruikersinvoer via de prompt is mogelijk. Eventuele foutmeldingen worden getoond. De standaard scripting module is de vermelde module. Deze parameters zorgen voor het al dan niet tonen van het logo (Microsoft regels) aan de prompt. De huidige opties worden bewaard voor deze gebruiker. Dit kan handig zijn indien je voor deze gebruiker bijvoorbeeld nooit het logo wenst te tonen. Deze optie bepaalt de tijd (in seconden) dat een script maximum mag lopen vooraleer het automatisch beëindigd wordt. Alle opties worden voorafgegaan door //. Voer de instructie cscript //? uit in een MS-DOS venster om alle mogelijke opties te bekijken. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 243 Voer via CScript het script Voorbeeld.vbs uit in een MS-DOS venster. Herhaal de voorgaande instructie maar nu met de optie Nologo. Wat is het verschil. Maak CScript de standaard engine. Voer Voorbeeld.vbs opnieuw uit door op de bestandsnaam te dubbelklikken in Verkenner. Hoe zie je dat CScript het script heeft uitgevoerd? Herstel WScript als standaard module. • WScript Ook in WScript kunnen dezelfde opties gebruikt worden en er kunnen ook argumenten doorgegeven worden. Geef de instructie WScript //? in een MS-DOS venster of in Start, Uitvoeren … Het volgende scherm met de mogelijke opties verschijnt. Je kunt sommige opties als standaard instellen via het dialoogvenster Windows Script Host Settings. Je krijgt dit dialoogvenster met de instructie WScript. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 244 Instellingen die je hier maakt, gelden voor elke volgende uitvoering van een script met WScript. Wil je gelijkaardige instellingen maken en koppelen aan een bepaald script, dan moet je een andere werkwijze volgen. Kies in Verkenner, in het snelmenu van het bestand Voorbeeld.vbs, de menuoptie: Eigenschappen. Je vindt het dialoogvenster Windows Script Host Settings terug in het tabblad Script. Wijzig de waarde van een eigenschap Display logo … en sluit het venster door op de knop OK te klikken. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 245 In Verkenner zie je dat er een nieuw bestand Voorbeeld.wsh aangemaakt is. Dit bestand bevat de nieuwe settings. Voer het script Voorbeeld.vbs opnieuw uit met WScript in een MS-DOS venster. Wat merk je? Open het bestand Voorbeeld.wsh in Kladblok. Je kunt het bestand nog uitbreiden met andere settings, bijvoorbeeld: 13.1.7 Scripting versus MS-DOS batchbestanden Scripting voor WSH wordt dikwijls voorgesteld als opvolging van DOS batchbestanden. WSH biedt een betere gebruikersinterface en heeft meer functies en controlestructuren ter beschikking dan deze in DOS batchbestanden. Geen enkel systeem is echter perfect en ook WSH is niet altijd het beste antwoord op alle automatiseringsproblemen. Vooral op het punt van bestandsverwerking is de WSH trager dan de ouderwetse batchfiles. Dit komt omdat de benodigde FileSystemObject-component (zie verder) moet gemaakt worden, verder kost het opstarten van de WSH de nodige systeemtijd. Windows Scripting Host biedt wel heel wat meer mogelijkheden dan een klassiek DOS batchbestand zoals verder in deze nota’s te merken is. 13.2 Scripts voor systeembesturing Scripts voor systeembesturing werken met methoden, gebeurtenissen en eigenschappen van objecten die overeenkomen met elementen uit het besturingssysteem. Deze objecten en hun interface worden beschreven in typebibliotheken. De belangrijkste typebibliotheek voor scripts voor systeembesturing is de IWshRuntimeLibrary. Ze combineert het Windows Script Host Object Model en het FileSystemObject Object Model. 13.2.1 Labo 75: Objectbibliotheken in Microsoft Script Editor Deze bibliotheek stel je ter beschikking van Microsoft Script Editor via Objectenoverzicht. Open Objectenoverzicht via Beeld, Overige vensters, Objectenoverzicht of met de knop Objectenoverzicht. De werkbalk Objectenoverzicht verschijnt. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 246 Klik op de knop Huidige pakketten/Bibliotheken . Vink in het dialoogvenster COM-bibliotheken aan en klik op Toevoegen. In het volgende dialoogvenster selecteer je Windows Script Host Object Model en klik je op OK. Sluit ook het dialoogvenster Pakketten/bibliotheken selecteren. Je krijgt een overzicht van de objecten die beschreven zijn in de bibliotheek. Ze worden verder besproken. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 247 Door het toevoegen van de bibliotheek is er ook hulp over de objecten toegevoegd aan de helpfunctie en herkent Intellisense de objecten! 13.3 Het WSH Object Model De objecten in het WSH Object Model zijn op de onderstaande manier gestructureerd. W Script W shArguments W shShell WSHSpecialFolders W shShortcut W shUrlShortcut WshEnvironment W shNetwork W shCollection VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 248 Deze objecten hebben vooral te maken met de Windows-omgeving en hebben elk hun specifieke betekenis, eigenschappen, methodes en gebeurtenissen. De objecten WshShell, WshNetwork en WshCollection zijn bereikbaar via het WScriptobject (zie verder). WScript WshArguments Dit object bevat informatie over het gebruikte script en de argumenten die daarbij gebruikt worden. Het heeft ook de mogelijkheid om ActiveX-componenten te creëren en zal de basis vormen voor de communicatie met externe objecten. Geeft een script de mogelijkheid om toegang te hebben tot de argumenten van het script. Zorgt voor toegang tot de omgevingsvariabelen van het gebruikte computersysteem en tot de mappen van de Windows Shell. Dit zijn onder andere het Bureaublad van Windows, het Startmenu en de documentenmap van de gebruiker. Via dit object bestaat ook de mogelijkheid om snelkoppelingen te maken en het register aan te spreken. WshShortcut Levert parameters voor een nieuwe snelkoppeling op de lokale computer binnen het besturingssysteem Windows. WshUrlShortcut Levert parameters voor een nieuwe snelkoppeling via het netwerk of op het Internet. WshEnvironment Geeft de mogelijkheid om een lijst te maken van omgevingsvariabelen en er uit de lijst te verwijderen. WshSpecialFolders Geeft de mogelijkheid om bewerkingen te doen met speciale Windows-mappen zoals het Bureaublad, het Startmenu en de persoonlijke documentenmap van de gebruiker. Wscript.Shell WScript.Network Laat je toe om het netwerk te bereiken en de gegevens te manipuleren van de gebruikte computer. Je kunt onder andere mappings maken en verwijderen naar netwerkschijven en -printers. WshCollection Dit is een collectie die door andere WSH-objecten gebruikt wordt om lijsten van items te maken. Het is niet de bedoeling om dit object model volledig te bespreken in deze tekst. In de volgende paragrafen wordt er aan de hand van enkel voorbeelden gedemonstreerd hoe sommige objecten kunnen gebruikt worden. Onder andere op de website http://scripting.winguides.com, in de WSH Reference Guide, vind je een overzicht van de beschikbare methodes en eigenschappen van de objecten met een aantal voorbeelden. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 249 Een overzicht van de eigenschappen en methoden per object, vind je in het overzicht bij dit hoofdstuk onder de referentie 13.7. 13.3.1 Het WScript-object WScript is de 'root' van het model. Het is altijd beschikbaar als er een script uitgevoerd wordt. Je hoeft er dus geen instantie van te creëren. Het WScript-object biedt volgende mogelijkheden: - informatie verzamelen over de runtime-omgeving van het script en zijn argumenten; - creatie van objecten of deze uit bestanden halen; - informatie tonen op het scherm. 13.3.2 Labo 76: Het WScript-object Voorbeeld 1 Dubbelklik in Verkenner op het bestand Objecten.vbs om het uit te voeren. Het script bevat volgende instructies. Option Explicit Dim blnAntwoord MsgBox "Versie van de Windows Scripting Host: " & WScript.Version MsgBox "De naam van dit script is " & WScript.ScriptName MsgBox "U heeft dit script opgestart als " & WScript.ScriptFullName WScript.Echo "Dit programma illustreert enkele methodes en eigenschappen van het Wscript-object" blnAntwoord = MsgBox ("Wens je dit programma te verlaten?", vbYesNo) if blnAntwoord = vbYes then WScript.Echo "Dit programma wordt voortijdig beëindigd!" WScript.Quit else WScript.Echo "Ik heb geen informatie meer!" end if Alhoewel WScript het 'hoofdobject' is, mag het niet weggelaten worden in de code. Wat is het verschil in resultaat van het gebruik van de instructie MsgBox en de WScript-methode Echo? Welk van beide biedt de meeste mogelijkheden? Wat is het verschil tussen de eigenschap ScriptName en de eigenschap ScriptFullName? Gebruik de methode Sleep() om in geval van een negatief antwoord de uitvoering van het script 3 seconden te onderbreken voordat het bericht "Ik heb geen informatie meer!" getoond wordt. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 250 Voorbeeld 2 De eigenschap Arguments bevat een referentie naar een WshArguments object dat de argumenten bevat die doorgegeven zijn aan het script. Het gebruik ervan wordt getoond in het eenvoudige script Argumenten.vbs waarvan de code hieronder weergegeven wordt. intgetal1 = CINt(WScript.Arguments.Item(0)) intgetal2 = CINt(WScript.Arguments.Item(1)) 'het verschil tussen deze twee getallen berekenen intverschil = intgetal1-intgetal2 wscript.echo "het verschil tussen beide getallen is: " & intverschil Voer het script uit in een MS-DOS venster door het volgende commando in te tikken. (Geef eventueel het volledig pad naar het script op.) WScript Argumenten.vbs 14 7 Je bekomt het volgende dialoogvenster als resultaat: Voer dit script uit met de instructie cscript. Je bekomt het volgende scherm. Maak een script dat een datum meekrijgt als argument. Het script geeft een boodschap met het aantal dagen dat de datum reeds voorbij is, of binnen hoeveel dagen de datum valt. Bewaar het script als ArgumentDatum.vbs. Het object WScript wordt niet herkend door IE. Het heeft dus geen zin een dergelijk script in Microsoft Script Editor te maken en te debuggen! 13.3.3 Het WScript.Shell object Zoals reeds vermeld, is het object WScript een doorgangspoort naar de andere hoofdobjecten. Via de methode CreateObject krijg je toegang tot de objecten WScript.Shell, WScript.Network en WScript.Collection. Op deze objecten kun je dan ook weer CreateObject gebruiken om objecten te creëren die in de hiërarchie onder het gebruikte object staan. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 251 13.3.4 Labo 77: Het WScript.Shell object Voorbeeld 1 Met het script Snelkoppeling.vbs wordt een snelkoppeling naar Kladblok op het bureaublad geplaatst. Voer het script uit en controleer de werking. Volgende code realiseert de snelkoppeling. 'Dit script maakt een snelkoppeling naar Kladblok op het bureaublad 'Wijzig in dit script 'Notepad' door de gewenste toepassing als je een andere snelkoppeling wilt plaatsen Option Explicit Dim objWshShell Dim objSnelkop Dim strMap set objWshShell = WScript.CreateObject("WScript.Shell") strMap = objWshShell.SpecialFolders("Desktop") set objSnelkop = objWshShell.CreateShortcut(strMap & "\Notepad.lnk") objSnelkop.TargetPath = "C:\Windows\Notepad.exe" objSnelkop.WindowStyle = 1 objSnelkop.IconLocation = "notepad.exe, 0" objSnelkop.Description = "Kladblok" objSnelkop.WorkingDirectory = strMap objSnelkop.Save WScript.Echo "Er staat een snelkoppeling naar Kladblok op het bureaublad." Gebruik maken van Microsoft Script Editor set objWshShell = WScript.CreateObject("WScript.Shell") mag ook geschreven worden als set objWshShell = CreateObject("WScript.Shell") Indien je het script wil schrijven en debuggen in Microsoft Script Editor, moet je het object WScript zelfs weglaten omdat dit object niet gekend is door IE. Om een bericht op het scherm te brengen, gebruik je dan bijvoorbeeld MsgBox. Pas de code op de volgende manier aan en controleer of je ze in Microsoft Script Editor kunt uitvoeren met Foutopsporing. Opgelet: plaats het script in een lege html-pagina! 'Dit script maakt een snelkoppeling naar Kladblok op het bureaublad 'Wijzig in dit script 'Notepad' door de gewenste toepassing als je een andere snelkoppeling wilt plaatsen Option Explicit Dim objWshShell Dim objSnelkop Dim strMap VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 252 set objWshShell = Createobject("WScript.Shell") strMap = objWshShell.SpecialFolders("Desktop") set objSnelkop = objWshShell.CreateShortcut(strMap & "\Kladblok.lnk") objSnelkop.TargetPath = "C:\Winnt\Notepad.exe" objSnelkop.WindowStyle = 1 objSnelkop.IconLocation = "notepad.exe, 0" objSnelkop.Description = "Kladblok" objSnelkop.WorkingDirectory = strMap objSnelkop.Save MsgBox "Er staat een snelkoppeling naar Kladblok op het bureaublad." Als IE het bovenstaande script inleest verschijnt volgend dialoogvenster op het scherm: Met het script breng je immers een wijziging aan, aan de computeromgeving en dit is niet altijd gewenst! Herschrijf het script gebruik makend van de With … End With structuur. Voer het script een tweede maal uit. Wordt er een tweede snelkoppeling aangemaakt? Als bij uitvoer van de CreateShortcut-methode, de snelkoppeling al bestaat, dan worden de eigenschappen gevuld met de reeds bestaande waarden. Maak een script dat een snelkoppeling naar een bepaald Word-document in de map Mijn documenten plaatst en het document opent in een gemaximaliseerd venster (WindowStyle: 3). Voorbeeld 2 In Verkenner bevat het snelmenu van een map verschillende opties. Je kunt hieraan opties toevoegen via het register. Register.vbs voert een dergelijke optie toe. Plaats het bestand Snelkoppelingmap in de map C:\. Voer het bestand Register.vbs uit. Controleer via het snelmenu van een willekeurige map de werking van de toegevoegde optie 'Snelkoppeling op Bureaublad'. De code van het bestand Register.vbs is als volgt. Option Explicit VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 253 Dim strOptie Dim strCommando Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") strOptie = "Snelkoppeling op Bureaublad" strCommando = """wscript.exe"" ""C:\snelkoppelingmap.vbs"" ""%L""" objWshShell.RegWrite "HKEY_CLASSES_ROOT\Folder\Shell\" & strOptie & "\", _ strOptie objWshShell.RegWrite "HKEY_CLASSES_ROOT\Folder\Shell\" "\Command\", strCommando & strOptie & _ MsgBox "Het register werd aangepast" Open het register en zoek de toegevoegde sleutels en waarde. De opdracht, geassocieerd met de sleutel HKEY_CLASSES_ROOT\Folder\Shell\Snelkoppeling op Bureaublad\Command\ is: ""wscript.exe" "C:\snelkoppelingmap.vbs" "%L"" Hierin is %L een omgevingsvariabele (een door Windows zelf gedefinieerde variabele) die verwijst naar de huidige map. Verklaar het gebruik van de aanhalingstekens in het script en in het register. De code van het script Snelkoppelingmap.vbs luidt als volgt. 'Dit script maakt een snelkoppeling naar de gespecificeerde map op het bureaublad Option Explicit Dim objWshShell Dim objSnelkop Dim strMap set objWshShell = WScript.CreateObject("WScript.Shell") strMap = objWshShell.SpecialFolders("Desktop") set objSnelkop = objWshShell.CreateShortcut(strMap & "\NaamMap.lnk") objSnelkop.TargetPath = WScript.Arguments.item(0) objSnelkop.WindowStyle = 1 objSnelkop.IconLocation = "c:\windows\system\shell32.dll, 3" objSnelkop.WorkingDirectory = strMap objSnelkop.Save WScript.Echo "Er staat een snelkoppeling naar de map op het bureaublad. Geef de snelkoppeling een gepaste naam." Kun je dit script zelfstandig gebruiken? Zo ja, hoe? Kun je dit script volledig debuggen binnen Microsoft Script Editor? Verklaar je antwoord. Maak een script Wallpaper.vbs waarmee je de naam van de huidige achtergrond van het bureaublad toont en daarna rechtstreeks wijzigt in het register. (HKCU\Control Panel\Desktop) VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 254 Voorbeeld 3 Omgevingsvariabelen zijn variabelen die Windows zelf definieert. Via het script Omgeving.vbs, kom je de waarden van de verschillende variabelen te weten. Voer dit script uit. De code luidt als volgt. 'Dit script geeft de waarde van de omgevingsvariabelen Option Explicit Dim objWshShell Dim objWshEnvironment Dim strNaam set objWshShell = WScript.CreateObject("WScript.Shell") set objWshEnvironment = objWshShell.Environment For Each strNaam in objWshEnvironment objWshShell.Popup strNaam Next WScript.Echo "Dat waren ze allemaal." In dit voorbeeld wordt het WshEnvironment object gebruikt. In het overzicht bij dit hoofdstuk vind je de eigenschappen en methoden van dit object. Pas het script aan zodat de variabele %PATH% verwijderd wordt, voor de waarden van de variabelen getoond worden. Pas het script aan zodat de variabele %PATH% als inhoud 'C:\Mijn documenten' krijgt, voor de waarden van de variabelen getoond worden. 13.3.5 Het WScript.Network object Zoals hierboven reeds beschreven, kun je via dit object toegang krijgen tot informatie over gebruikers en het netwerk. 13.3.6 Labo 78: het WScript.Network object Voorbeeld Voer het bestand Parameters.vbs uit. De code van Parameters.vbs is als volgt. Option Explicit Dim objWshNetwork set objWshNetwork = WScript.CreateObject("WScript.Network") Wscript.Echo "De naam van deze computer is " & objWshNetwork.ComputerName Wscript.Echo "De aangemelde gebruiker is " & objWshNetwork.UserName If objWshNetwork.UserDomain <> "" then WScript.Echo "Het domein is " & objWshNetwork.UserDomain end if VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 255 Waar vind je in het register de naam van de computer? Maak een script dat een netwerkverbinding maakt met een bepaalde gedeelde bron. Breid het script Parameters.vbs uit zodat ook alle netwerkverbindingen en alle netwerkprinters getoond worden. 13.4 Het FileSystemObject Object Model Indien je VBScript gebruikt om bewerkingen met bestanden en mappen te doen, heb je een reeks objecten nodig die hiermee kunnen werken. Deze objecten worden geleverd door het FileSystemObject Object Model. FileSystemObject Drive TextStream Drives Folder Folders File Files Object/Collectie Beschrijving FileSystemObject Dit is het hoofdobject in de hiërarchie en meteen het belangrijkste object. Het bevat methodes en eigenschappen om schijven, mappen en bestanden te manipuleren. Drive Object dat toelaat om informatie te verzamelen over een schijf (logisch, fysisch, cd-rom, RAM-disk, netwerkschijf, …) verbonden aan het computersysteem. Drives Collectie van Drive objecten. Lijst van schijven beschikbaar op de computer. (Verwisselbare schijfeenheden moeten geen medium bevatten om in de lijst voor te komen.) File Object dat bestandsbewerkingen toelaat (toevoegen, verwijderen, verplaatsen) en bestandsinformatie (naam, pad, type) kan leveren. Files Collectie van File objecten. Lijst geeft van alle bestanden in een map. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 256 Folder Object voor behandeling van mappen. Je kunt hierdoor mappen toevoegen, verwijderen, verplaatsen,… en het systeem bevragen over naam, plaats en grootte van een map. Folders Collectie van Folder objecten. Lijst van deelmappen uit een map. TextStream Object voor behandeling van tekstbestanden. Het model wordt op meerdere plaatsen beschreven, o.a. • in de Helpfunctie van Microsoft Script Editor: FileSystemObject Object Tutorial. Het wordt geleverd door de Scripting Run-time Library: Scrrun.dll. • in de Helpbestanden van VBScript en Windows Scripting Host. • Op de speciale website die reeds gebruikt werd http://scripting.winguides.com/ 13.4.1 Labo 79: Het FileSystemObject object en de eigenschap Drives Om met een object te kunnen werken moet je dit eerst aanmaken. Je doet dit door met de functie CreateObject te verwijzen naar het object FileSystemObject zoals in de volgende instructie: Set objFSO = CreateObject("Scripting.FileSystemObject") Het FileSystemObject object heeft één eigenschap Drives en verschillende methoden. Deze methoden kunnen opgedeeld worden in verschillende categorieën. Ze worden in het overzicht bij dit hoofdstuk besproken. Het volgende voorbeeld maakt gebruik van de enige eigenschap van het FileSystemObject object: Drives. De waarde van de eigenschap is een collectie. Elk element van de collectie is een Drive object en kan dus op zijn beurt gebruik maken van de eigenschappen en methoden van dit type object. Voorbeeld Het script Schijven.vbs geeft informatie over de beschikbare schijven. Voer het script uit. De code van Schijven.vbs. Option Explicit Dim objFSO Dim objSchijf Dim strInformatie Set objFSO = CreateObject("Scripting.FileSystemObject") For each objSchijf in objFSO.Drives strInformatie = "Schijf: " & objSchijf.DriveLetter & vbCRLF & "Type schijf: " select case objSchijf.Drivetype case 0 strInformatie = strInformatie & "onbekend" case 1 strInformatie = strInformatie & "verwijderbaar" case 2 VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 257 strInformatie = strInformatie & "vast" case 3 strInformatie = strInformatie & "netwerk" case 4 strInformatie = strInformatie & "Cd-rom" case 5 strInformatie = strInformatie & "RAM disk" end select if objSchijf.IsReady then strInformatie = strInformatie & vbCRLF & "Er zijn " & objSchijf.FreeSpace & " bytes beschikbaar" end if MsgBox strInformatie Next MsgBox "Dit waren alle beschikbare gegevens" Pas het script aan zodat ook voor elke schijf het bestandssysteem getoond wordt, en de vrije ruimte in MB gegeven wordt. 13.4.2 Labo 80: Manipulatie van mappen en bestanden De methoden van het FileSystemObject hebben betrekking op de manipulatie van mappen en bestanden. Voorbeeld Het script Systeembestanden.vbs gebruikt verschillende van bovenstaande methoden. Voer het script Systeembestanden.vbs uit. De code is als volgt: 'Dit script kopieert de bestanden Autoexec.bat en Config.sys naar een bepaalde map en opent ze in Kladblok Option Explicit Dim Dim Dim Dim strMap datDatum objFSO objWshShell strMap = "C:\" datDatum = Year(Date) & "-" & month(Date) & "-" & Day(Date) set objFSO = CreateObject("Scripting.FileSystemObject") strMap = objFSO.BuildPath(strMap,datDatum) if not objFSO.FolderExists(strMap) then objFSO.CreateFolder strMap end if objFSO.CopyFile "c:\boot.ini", strMap & "\", true objFSO.CopyFile "c:\autoexec.bat", strMap & "\", true set objWshShell = WScript.CreateObject("WScript.Shell") MsgBox "De bestanden zijn gekopieerd naar de map " & strMap objWshShell.Run "notepad.exe c:\boot.ini" objWshShell.Run "notepad.exe c:\autoexec.bat", ,true VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 258 Wat is de betekenis van het argument true in de laatste instructie? Pas het script aan zodat niet de oorspronkelijke, maar de gekopieerde bestanden getoond worden in Kladblok. Pas het script aan zodat gecontroleerd wordt of alle bestanden die gebruikt worden ook werkelijk bestaan. Als de tekstbestanden autoexec.bat en/of boot.ini niet bestaan, dan moeten ze door het script aangemaakt worden. 13.4.3 Labo 81: De objecten Folder, File en TextStream De eigenschappen en methoden van de objecten Folder, File en TextStream worden opgesomd in het overzicht bij dit hoofdstuk. Voorbeeld 1 Het onderstaande programma Aanmaken.vbs maakt een map en een tekstbestand aan. Eens dit gebeurd is, wordt de tekst "Dit is een voorbeeld" weggeschreven in het tekstbestand. Dit tekstbestand wordt daarna gekopieerd naar een back-upbestand. Option Explicit Dim objFSO Dim objMijnBestand Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") If not objFSO.FolderExists("VBScript cursus") then ObjFSO.createFolder "VBScript cursus" End if set objMijnBestand = ObjFSO.createTextFile ("VBScript cursus\VBScript.txt") objMijnBestand.Writeline ("Dit is een voorbeeld") ObjFSO.copyFile "VBScript cursus\VBScript.txt", "VBScript cursus\VBScript_backup.txt" Voer het script uit. Voorbeeld 2 Met het script Wegvegen.vbs worden de mappen en bestanden die met Aanmaken.vbs gemaakt zijn opnieuw verwijderd. Option explicit Dim objFSO Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") MsgBox "De bestanden en mappen aangemaakt met het script Aanmaken.vbs, worden weer verwijderd." ObjFSO.deleteFile "VBScript cursus\VBScript.txt" ObjFSO.deleteFile "VBScript cursus\VBScript_backup.txt" ObjFSO.deleteFolder "VBScript cursus" MsgBox "Alles Foetsjie!" Voorzie het script van een gepaste foutafhandeling en voer het uit. Voorbeeld 3 VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 259 Het script RapportVrijeRuimte.vbs maakt een rapport met informatie over de vrije ruimte op de beschikbare stations. Option explicit Dim Dim Dim Dim objFSO objRapport objSchijf objWshShell Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objRapport = objFSO.CreateTextFile("Schijven.txt", True) objRapport.writeLine "Rapport gemaakt op " & Date objRapport.WriteBlankLines(2) for each objSchijf in objFSO.Drives objRapport.write objSchijf.DriveLetter & " " if objSchijf.IsReady then objRapport.writeLine objSchijf.FreeSpace & " bytes beschikbaar" else objRapport.writeLine "niet beschikbaar" end if next objRapport.Close set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run "notepad.exe Schijven.txt" Voer het script uit. Maak een script AlgemeenRapport.vbs, dat op een overzichtelijke wijze zoveel mogelijk informatie over het computersysteem geeft. Maak een script GrootteMappen.vbs dat een rapport genereert dat een overzicht geeft van de grootte van alle mappen in de rootmap. Je kunt dit script natuurlijk slechts uitvoeren als je voldoende rechten hebt! 13.5 Labo 82: Automation De objectmodellen van de componenten van de Microsoft Office Suite zijn ook te gebruiken in scripts. Voeg in Microsoft Script Editor de typebibliotheken van MS-Excel en MS-Word toe. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 260 Je creëert een instantie van een Application object op dezelfde manier als in VBA. Bijvoorbeeld: Set objWord = CreateObject("Word.Application") Eens de instantie gecreëerd is, kun je eigenschappen, methodes en gebeurtenissen van dit object gebruiken. Voorbeeld 1 Voer het onderstaande script Worddocument.vbs uit. 'Script om een Worddocument te bewerken Option Explicit Dim objWordtoepassing set objWordtoepassing = CreateObject("Word.Application") With objWordtoepassing .visible = true .Activate .Documents.Add .NewWindow .NewWindow End With MsgBox "Dit zijn drie vensters voor hetzelfde document" objWordtoepassing.Documents.Add Msgbox "Dit is een nog eens nieuw document" MsgBox "Aantal geopende Worddocumenten: " & _ objWordtoepassing.Documents.Count Verklaar de resultaten van het script. Voorbeeld 2 Het script SchijvenExcel.vbs geeft dezelfde informatie als Schijven.vbs, maar de informatie verschijnt in een MS-Excel werkblad. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 261 Voer het script uit. De code is als volgt: Option Explicit Dim Dim Dim Dim Dim objFSO objSchijf objExcelToepassing strInformatie intRij Set objExcelToepassing = CreateObject("Excel.Application") With objExcelToepassing .Visible = True .Workbooks.Add .Cells(1,1).Value = "Schijf" .Cells(1,2).Value = "Type" .Cells(1,3).Value = "Vrije ruimte (bytes)" End With intRij = 3 Set objFSO = CreateObject("Scripting.FileSystemObject") For each objSchijf in objFSO.Drives objExcelToepassing.Cells(intRij, 1) = objSchijf.DriveLetter strInformatie = "" select case objSchijf.Drivetype case 0 strInformatie = strInformatie & "onbekend" case 1 strInformatie = strInformatie & "verwijderbaar" case 2 strInformatie = strInformatie & "vast" case 3 strInformatie = strInformatie & "netwerk" case 4 strInformatie = strInformatie & "Cd-rom" case 5 strInformatie = strInformatie & "RAM disk" end select objExcelToepassing.Cells(intRij, 2) = strInformatie if objSchijf.IsReady then objExcelToepassing.Cells(intRij, 3) = objSchijf.FreeSpace end if intRij = intRij +1 Next Pas het script aan, zodat het werkblad een duidelijkere opmaak krijgt. 13.6 Labo 83: Scripts plannen met Taakplanner Eén van de speciale mappen in de Windows-omgeving is de map voor tijdelijke bestanden, bij standaardinstallatie C:\Winnt\TEMP. Welke bestanden worden door Windows in deze map geplaatst? Bestudeer de volgende code. Wat doet het script? Option Explicit VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 262 Dim Dim Dim Dim objFSO objMap objBestand colBestanden set objFSO = CreateObject("Scripting.FileSystemObject") set objMap = objFSO.GetSpecialFolder(2) set colBestanden = objMap.Files For Each objBestand in colBestanden if UCase(objFSO.GetExtensionName(objBestand.Path))="TMP" Then objBestand.Delete end if Next Dim objFSO Dim objMap Dim objBestand Dim colBestanden set objFSO = CreateObject("Scripting.FileSystemObject") set objMap = objFSO.GetSpecialFolder(2) set colBestanden = objMap.Files For Each objBestand in colBestanden if UCase(objFSO.GetExtensionName(objBestand.Path))="TMP" Then objBestand.Delete end if Next Open een willekeurig document in MS-Word. Voer het bestand TempBestandenVerwijderen.vbs uit. Welke foutmelding krijg je? Voeg aan het script een instructie toe (voor de delete-instructie) die de naam van het bestand dat moet verwijderd worden, toont. Voer het script opnieuw uit. Probeer het betrokken bestand manueel te verwijderen. Lukt dit? Verklaar. Je kunt het script zo aanpassen dat het niet probeert tijdelijke bestanden gekoppeld aan geopende documenten te verwijderen, bijvoorbeeld door de voorwaarde in de Ifinstructie uit te breiden tot: if UCase(objFSO.GetExtensionName(objBestand.Path))="TMP" AND _ datevalue(objBestand.DateCreated) <> Date() Then Doe dit. Naast het bestand dat gecreëerd wordt door het geopende MS-Word document, kunnen er nog bestanden zijn die dezelfde fout veroorzaken. Om het script toe te laten alle bestanden te verwijderen die geen fouten veroorzaken, voeg je foutafhandeling toe. Plaats de volgende instructie voor de For Each … lus. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 263 On Error Resume Next Voer het script opnieuw uit. Pas het script zo aan dat de naam van de bestanden niet meer getoond wordt. Er moet wel een logboek gemaakt worden dat de naam van de niet verwijderde bestanden bevat met het foutnummer en de foutmelding. (Tip: bij geen fout is Err.Number = 0). Een reeds bestaand logboek mag overschreven worden. Een taak zoals hierboven beschreven moet regelmatig uitgevoerd worden. Ze kan gepland worden met Windows Taakplanner. Gebruik de wizard Een geplande taak toevoegen in de map Geplande taken van Deze computer. Voeg deze taak toe, uitvoering: wekelijks. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 264 13.7 Overzicht Enkel eigenschappen en methoden die van toepassing zijn in VBScript en in de Windows 9x-omgeving worden vermeld. 13.7.1 9 WSH Object Model WScript Eigenschappen Arguments Bevat een referentie naar een WshArguments-object dat de argumenten bevat die doorgegeven zijn aan het script. FullName String die de volledige naam bevat van de WSH-module die het script uitvoert. Path String die de naam bevat van de Wsh-module die het script uitvoert. ScriptFullName String die de volledige naam bevat van het script dat uitgevoerd wordt. ScriptName String die de naam bevat van het script dat uitgevoerd wordt. Version String die het versienummer bevat van de WSH-module die het script uitvoert. Methoden CreateObject() Creëert een object. Via deze methode krijg je toegang tot de andere objecten. Echo() Schrijft het argument in een dialoogvenster of een MS-DOS venster afhankelijk van de gebruikte Wsh-module. Quit() Stopt de uitvoering van het script Sleep() Stopt de uitvoering van het script voor het opgegeven aantal milliseconden 9 WshShell Eigenschappen Environment Bevat een referentie naar een WshEnvironment-object. SpecialFolders Bevat een referentie naar een WshSpecialFolders-object. Methoden CreateShortcut() Maakt een leeg WshShortcut-object. Popup() Toont een boodschappenvenster. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 265 RegDelete() Verwijdert een sleutel of een waarde in het Register. RegRead() Leest een sleutel of een waarde uit het Register RegWrite() Schrijft een sleutel of een waarde naar het Register. Run() Start een extern programma en geeft het script de mogelijkheid om te wachten tot dit beëindigd is. 9 WshSpecialFolders Eigenschappen Item Bevat het pad van de aangeduide map. Vermits het de standaardeigenschap is, hoeft ze niet expliciet vermeld te worden. Count Bevat het aantal speciale mappen. Methoden: geen Enkele belangrijke speciale mappen zijn: Desktop, AppData, Favorites, MyDocuments, NetHood, StartMenu en Startup. Opgelet: gebruik déze namen als argument van de eigenschap SpecialFolders, ook in een Nederlandstalige versie! 9 WshShortcut Eigenschappen Arguments Een string die het argument bevat dat doorgegeven wordt aan het uitvoerbaar bestand waarnaar de snelkoppeling verwijst. Description Beschrijving van de snelkoppeling. Windows Explorer maakt hiervan geen gebruik! FullName De volledige naam van de snelkoppeling. Alleen lezen. Hotkey Een string die de hotkey bevat waarmee de snelkoppeling kan gestart worden, bijvoorbeeld Ctrl+Alt+H. IconLocation Een string die het pad en de index bevat voor het pictogram van de snelkoppeling. Bijvoorbeeld c:\windows\system\shell32.dll,12 verwijst naar het 13de pictogram in het genoemde bestand TargetPath Hetgeen waarnaar de snelkoppeling verwijst: een map, een uitvoerbaar bestand of een bestand dat kan uitgevoerd worden. WindowStyle De stijl van het venster waarin de toepassing geopend wordt. (Waarde tussen 0 en 10) WorkingDirectory De werkmap waarin de toepassing gestart wordt. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 266 Methode Bewaart de snelkoppeling op de locatie gespecificeerd in FullName Save() 9 WshEnvironment Eigenschappen Item Geeft de waarde van de gespecificeerde omgevingsvariabele. Vermits het de standaardeigenschap is, hoeft ze niet expliciet vermeld te worden. Count Bevat het aantal gevonden omgevingsvariabelen. Methode Remove() 9 Verwijdert de gespecificeerde variabele gedurende het verloop van het proces. WshNetwork Eigenschappen ComputerName Naam van de computer. Alleen lezen. UserDomain Naam van het domein waarin de gebruiker werkt. Alleen lezen. UserName Naam van de ingelogde gebruiker. Alleen lezen. Met deze eigenschappen kun je gegevens opvragen, niet wijzigen. Je kunt de corresponderende gegevens wel wijzigen door in te grijpen in het register. Methoden EnumNetworkDrives() Geeft een opsomming van de netwerkverbindingen (network drives) d.m.v. een WshCollection object. MapNetworkDrive() Creëert een netwerkverbinding. RemoveNetworkDrive() Verwijdert een netwerkverbinding. AddPrinterConnection() Voegt een netwerkprinter toe. RemovePrinterConnection() Verwijdert een netwerkprinter. EnumPrinterConnections() Geeft een opsomming van de netwerkprinters d.m.v. een WshCollection object. SetDefaultPrinter() Duidt een printer aan als standaardprinter. Indien het om een netwerkprinter gaat moet je de UNC-naam opgeven. Verschillende argumenten vereisen argumenten. http://www.winguides.com/scripting/ vind je hierover uitleg en voorbeelden. VVKSO Ondersteuning Informaticabeheer Op Beheer van een servergestuurd netwerk met Windows 2000 - 267 13.7.2 9 Het FileSystemObject Object Model FileSystemObject Eigenschappen Heeft als waarde een referentie naar een Drives collectie. Elk object in de collectie is een Drive object tot een schijf identificeert die beschikbaar is in het systeem. Drives Methoden Voor de duidelijkheid zijn de methoden ingedeeld in verschillende categorieën. Van de belangrijkste wordt de syntaxis weergegeven. 9 Paden BuildPath() Concateneert twee opgegeven padnamen. Voegt een \ toe als dit noodzakelijk is. GetAbsolutePathName() Geeft het volledige pad als een relatief pad opgegeven wordt. GetBaseName() Geeft de naamcomponent in een opgegeven pad of dit nu een map of een bestand is. GetDriveName() Geeft de drivenaam van het opgegeven pad indien dit een drivenaam bevat. Anders: leeg. GetExtensionName() Geeft de extensie van het laatste element in het pad als dit een extensie is. Anders: leeg. GetFileName() Analoog met GetBaseName(), maar geeft ook de extensie als het om een bestand gaat. GetParentFolderName() Geeft het pad naar de bovenliggende map. GetSpecialFolder() Geeft het pad naar 3 speciale mappen: 0 = Windows map, 1 = Windows\System map, 2 = map voor tijdelijke bestanden. GetTempName() Geeft een willekeurige naam die gegarandeerd uniek is. 9 Kopiëren en verplaatsen van mappen en bestanden CopyFile() Kopieert een bestand. CopyFile bron, doel [,overschrijven] waarbij overschrijven de waarde True of False heeft. CopyFolder() Kopieert een map. CopyFolder bron, doel [,overschrijven] waarbij overschrijven de waarde True of False heeft. MoveFile() Verplaatst een bestand. MoveFile bron, doel MoveFolder() Verplaatst een map. MoveFolder bron, doel 9 Creëren, openen en verwijderen van mappen en bestanden CreateFolder() VVKSO Creëert een map. CreateFolder mapnaam Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 268 CreateTextFile() Creëert een tekstbestand, het enige type bestand dat aangemaakt kan worden. CreateTextfFile bestandsnaam [, overschrijven] OpenTextFile() Opent een bestaand tekstbestand, geeft een TextStream object. OpenTextFile bestandsnaam [,iomodus] [,maken] Waarden voor iomodus: 1 = Lezen, 2 = Schrijven, 3 = Toevoegen. Maken = True: als het bestand niet bestaat wordt het aangemaakt. DeleteFile() Verwijdert een bestand volledig (niet naar Prullenbak). DeleteFile bestandsnaam DeleteFolder() Verwijdert een bestand volledig (niet naar Prullenbak). DeleteFile mapnaam 9 Nagaan of een schijf, map of bestand bestaat DriveExists() Kijkt na of een opgegeven schijf bestaat. FolderExists() Kijkt na of een opgegeven map bestaat. FileExists() Kijkt na of een opgegeven bestand bestaat. 9 Een instantie van object van het type Drive, Folder en File maken GetDrive() Creëert een object van het type Drive. GetFolder() Creëert een object van het type Drive. GetFile() Creëert een object van het type Drive. 9 Drive Eigenschappen AvailableSpace Het aantal bytes beschikbaar voor de huidige gebruiker op de gespecificeerde schijf. DriveLetter Letter die de schijf benoemd, bijvoorbeeld C. DriveType Soort schijf (1 = verwijderbaar, 2 = vast, 3 = netwerk, 4 = Cd-rom, 5 = Ram-disk, 0= fout of ongekend type). FileSystem String met een van de volgende waarden: FAT, FAT32, NTFS, CDFS. FreeSpace Aantal vrije bytes op de gespecificeerde schijf. IsReady Waar of Onwaar naargelang de schijf klaar is voor gebruik. Path Pad van de schijf, bijvoorbeeld C: voor schijf C. RootFolder Rootmap voor de gespecificeerde schijf, bijvoorbeeld C:\ voor schijf C. SerialNumber Serienummer van de schijf. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 269 ShareName Naam van een gedeelde map als het een netwerkschijf is, anders een lege string. TotalSize Grootte van de schijf voor de huidige gebruiker in bytes. VolumeName De volumenaam van de gespecificeerde schijf. Lezen en schrijven. 9 Folder Eigenschappen Attributes Attributen van de map. Lezen en schrijven. DateCreated Datum waarop de map gecreëerd is. Alleen lezen. Drive Geeft de driveletter van de drive waarin de map staat. Alleen lezen. Files Geeft een Filecollectie met alle bestanden die de map bevat. IsRootFolder Waar als de map de rootmap is. Onwaar in alle andere gevallen. Name Geeft de naam van de map zonder informatie over het pad. ParentFolder Geeft het Folder object voor de parent map. Path Geeft het volledige pad van de map. ShortName Geeft de 8.3 versie van de naam. ShortPath Geeft de 8.3 versie van het pad. Size Geeft het aantal bytes bevat in de map. Subfolders Geeft een Foldercollectie met alle submappen van de map. Type Geeft het type van de map (zoals dat vermeld wordt in de betreffende kolom van Verkenner). Methoden Copy() Kopieert de huidige map naar de gespecificeerde map. CreateTextFile() Creëert een tekstbestand in de huidige map. Delete() Verwijdert de huidige map. Move() Verplaatst de map naar de gespecificeerde map. 9 File Eigenschappen Een subset van de eigenschappen van het Folder object. Het spreekt vanzelf dat eigenschappen als Files, IsRootFolder, SubFolders … hier niet toepasbaar zijn. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 270 Methoden De methoden Copy(), Delete() en Move() zijn analoog als in het Folder object. OpenAsTextStream() 9 Opent het huidige object als een 'tekststroom'. De methode creeert m.a.w. een TextStreamObject. TextStream Eigenschappen AtEndOfLine Duidt aan of de 'file pointer' juist voor het einde van een lijn staat. (Een lijn wordt meestal afgesloten door een CR/LF.) AtEndOfStream Duidt aan of de 'file pointer' juist voor het einde van het bestand staat. Column Geeft de positie van de 'file pointer' in de lijn. Line Geeft de lijn waarin de 'file pointer' staat. De 'file pointer' geeft gewoon de positie aan waar je aan 't lezen of schrijven bent in een tekstbestand. Methoden Read() Leest het aangeduide aantal karakters vanaf de 'file pointer' en plaatst ze in een string. De 'file pointer' schuift met dit aantal karakters op. ReadAll() Leest van de huidige positie tot aan het einde van het bestand. ReadLine() Leest van de huidige positie tot aan het einde van de lijn. Skip() Verplaats de 'file pointer' het aantal aangeduide posities (moet positief getal zijn) verder. SkipLine() Verplaats de 'file pointer' naar het begin van de volgende lijn. Write() Schrijft de aangegeven string op de huidige positie in het bestand en schuift de 'file pointer' verder. WriteLine() Schrijft de aangegeven string op de huidige positie in het bestand en voegt een einde lijn (CR/LF) toe. WriteBlankLines() Schrijft het aangegeven aantal CR/LF op de huidige positie in het bestand. Close() Sluit het bestand. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 271 9 Drives, Folders, Files Eigenschappen Count Aantal items in de collectie. Item Verwijst naar een specifiek item van de collectie. Standaardeigenschap. Methode van Folders AddFolders() Voegt de gespecificeerde folder toe aan de collectie. 13.8 Netwerkbesturing http://www.u2u.be/adsi1.asp Voor de meeste voorbeelden en oefeningen in deze paragraaf moet je computer deel uitmaken van een Windows NT4 of Windows 2000 netwerk. Bovendien moet je voldoende rechten hebben om bepaalde objecten te kunnen manipuleren. 13.8.1 ADSI De belangrijkste netwerkbesturingssystemen die momenteel gebruikt worden zijn: Windows NT4, Windows 2000 Server en Novell Netware. Hoewel ze alle drie op een andere manier werken, kunnen de verschillende objecten die ze gebruiken - computers, groepen, gebruikers, printjobs, … - op dezelfde manier aangesproken worden via ADSI, Active Directory Service Interfaces. Via een ADSI Provider voor het specifieke netwerk worden de gewenste objecten aangesproken. Je hoeft als je ADSI gebruikt de interne werking van de directory niet te kennen. Alle directory's worden via ADSI op eenzelfde manier benaderd. Meer informatie over ADSI vind je op: http://www.microsoft.com/windows2000/techinfo/howitworks/activedirectory/adsilinks.asp ADSI 2.5 is standaard beschikbaar op Windows 2000. Gebruik je geen Windows 2000 dan kun je de nodige providers downloaden via de website. Download ADSI (ADSI25.chm). VVKSO 2.5 indien Ondersteuning Informaticabeheer nodig. Download eveneens het helpbestand Beheer van een servergestuurd netwerk met Windows 2000 - 272 13.8.2 Een directory Een directory is, algemeen gesproken, een lijst van objecten met informatie over die objecten. Een telefoonboek is bijvoorbeeld een directory. In de context van deze cursus gaat het om de resources die ter beschikking zijn op netwerken (waaronder bijvoorbeeld de gebruikers, printers, gedeelde mappen, enz.) Een directory is vooral geoptimaliseerd om de informatie heel snel terug ter beschikking te stellen aan het besturingssysteem, de services draaiende in het besturing systeem, software producten en zelfgeschreven toepassingen. Voorbeelden van directory's zijn de Exchange Directory, de NT Directory Services, de Novell Directory Services, de Netscape Directory Server, de Site Server Membership en Personalization directory, de IIS Metabase en natuurlijk ook de Active Directory binnen Windows 2000. ADSI bepaalt niet hoe een directory zijn inhoud stockeert, maar bepaalt wel hoe je vanuit bijvoorbeeld een script deze inhoud kunt aanspreken en beheren. De inhoud van de betreffende directory wordt door ADSI via een boomstructuur aan de gebruiker getoond. 13.8.3 Namespaces en schema's ADSI gebruikt twee belangrijke concepten: namespace en schema. Een namespace kun je vrijwel gelijkschakelen met een directory. Het is een afgelijnde context waarin je uniek via een naam een object kunt ophalen en aanspreken. Voorbeelden van namespaces zijn WinNT: en LDAP (zie verder). Het schema van een namespace bepaalt de eigenschappen van een object, welke van die eigenschappen verplicht zijn en welke optioneel, welke datatypes deze eigenschappen hebben en daarnaast nog een aantal andere zaken. 13.8.4 Werken met objecten in ADSI Een sessie Om met de netwerk objecten te kunnen werken, moet je eerst een sessie creëren met de ADSI provider via GetObject(). Voor WinNT: set objProvider = GetObject("WinNT:") Voor LDAP: set objProvider = GetObject("LDAP:") Let op: de providernaam is hoofdlettergevoelig! LPAD staat voor Lightweight Directory Access Protocol een standaard protocol voor het benaderen van directory informatie. Een object in een sessie Objecten binnen de hiërarchie van de provider worden gecreëerd en verwijderd met de methoden Create en Delete. objDomein.create "user", strUserid objDomein.delete "user", strUserid Om een bestaand object toe te voegen aan een collectie gebruik je de methoden Add en Remove. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 273 objGroep.add (objUser.ADSPath) objGroep.remove(objUser.ADSPath) Eigenschappen Je kunt op twee manieren naar eigenschappen van objecten refereren: op de klassieke manier of via de Get methode. WScript.echo objDirectoryObject.name WScript.echo objDirectoryObject.Get "name" De waarde van een eigenschap aanpassen, gebeurt op een analoge wijze. Hier kun je ook de methode Put gebruiken: objGebruiker.FullName = "Pietje Smits" objGebruiker.Put "FullName", "Pietje Smits" VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 274 13.9 Het Windows NT 4 schema 13.9.1 WinNT objecthiërarchie Hieronder wordt de Windows NT 4 objecthiërarchie weergegeven met de voornaamste objecten. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 275 W in N T : D o m a in U ser G ro u p C o m p u te r S e rv ic e F ile S e rv ic e F ile S h a re R e s o u rc e S e s s io n s P rin tQ u e u e P rin tJ o b s U ser G ro u p S ch em a C la s s P ro p e rty S y n ta x De belangrijkste eigenschappen en methoden van de objecten zijn hieronder opgesomd. Domain VVKSO Domein Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 276 Gebruikers in het domein User Eigenschappen: FullName, Description, HomeDirDrive, HomeDirectory, Profile, LoginScript, LastLogin Methodes: setpassword, newpassword NT Global groups Group Eigenschap: Description Computer Computers in het domein Eigenschappen: Division, Owner, OperatingSystem, Processor, ProcessorCount FileService Service die het bestandssysteem benaderd FileShare NT gedeelde bestanden Eigenschappen: Discription, Path Resource Resource in de service Sessions Collectie van huidige sesies Eigenschappen: User, Computer, ConnectTime Service Geïnstalleerde NT services Eigenschappen: StartType, DisplayName, Path, ServiceAccountname Methoden: start, stop, pause, continue, setpassword PrintQueue NT printrijën Eigenschappen: StartTime, Priority, Description, Location, Model Methoden: start, stop, pause, continue, setpassword PrintJobs collectie van de printjobs in de printrij Eigenschappen: User, PagesPrinted, TimeSubmitted, Description TotalPages, Priority, Methoden: pause, resume (Computer.)User Gebruikers in de accounts database van de computer (Computer.)Group Locale groepen Ieder object beschikt naast zijn specifieke eigenschappen over 6 kerneigenschappen: het Parent object, ADsPath , Name , Guid (een uniek identificatiegetal), het Schema en de object Class (waartoe het behoort). VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 277 Raadpleeg het ADSI Helpbestand voor een volledig overzicht van het Windows NT 4 schema: ADSI Reference, ADSI System Providers, ADSI WinNT Provider, WinNTSchema. 13.9.2 Labo 84: Voorbeeld Het volgende script, DomeinSchema.vbs, geeft informatie over het schema object geassocieerd met het opgegeven domein. Option Explicit Dim objSchema Dim objSchemaItem On Error Resume Next set objSchema = GetObject("WinNT://MijnDomein/Schema") For Each objSchemaItem in objSchema WScript.Echo objSchemaItem.Class + " " + objSchemaItem.Name Next In het voorbeeld zie je hoe de naam van het directory object gevormd wordt. Na de naam van de provider komt een dubbele schuine streep //. Elke volgende component in de boomstructuur wordt door een enkele schuine streep gescheiden van zijn 'parent'. Voer het script DomeinSchema.vbs uit in een MS-DOS venster met CScript. Gebruik een instructie als de volgende om de uitvoer in een tekstbestand te schrijven. CScript …/domeinschema.vbs > schema.txt Welke informatie krijg je in het schema? Als je een verbinding maakt met een object d.m.v. GetObject() moet je in sommige gevallen de klasse van het object vermelden. Bijvoorbeeld: Get objSchema = GetObject("WinNT://MijnDomein/MijnServer") geeft een User object, terwijl Get objSchema = GetObject("WinNT://MijnDomein/MijnServer, computer") resulteert in een Computer object. 13.9.3 Labo 85: Informatie opvragen Het script InformatieNT.vbs geeft een overzicht van de domeinen, gebruikers, computers en groepen van het NT-netwerk. Vervang in InformatieNT.vbs de domeinnaam MijnDomein door een bestaand domein op het netwerk. Voer het script uit in een MS-DOS venster met CScript. Sla de uitvoer op in een tekstbestand. De code van het script is als volgt. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 278 Option Explicit Dim Dim Dim Dim objWinNT objDomein objDomeinItem objServerItem Set objWinNT = GetObject("WinNT:") For Each objDomein in objWinNT Wscript.echo objDomein.name For Each objDomeinItem in objDomein WScript.echo " " & objDomeinItem.Class & " " & objDomeinItem.Name Select Case objDomeinItem.Class Case "User" WScript.echo " Volledige naam: " & objDomeinItem.FullName & _ vbCRLF & " Persoonlijke map: " & objDomeinItem.HomeDirectory & _ vbCRLF & " Login script: " & objDomeinItem.LoginScript & _ vbCRLF & " Profiel: " & objDomeinItem.Profile Case "Computer" WScript.echo " Eigenaar: " & objDomeinItem.Owner & _ vbCRLF & " Besturingssysteem: " & objDomeinItem.OperatingSystem & _ vbCRLF & " Versie: " & objDomeinItem.OperatingSystemVersion For Each objServerItem in objDomeinItem WScript.echo " " & objServerItem.Class & " " & objServerItem.Name Next Case "Group" WScript.echo " Beschrijving: " & objDomeinItem.Description End Select Next Next WScript.echo "Dit was de volledige informatie" Pas het script aan zodat de informatie automatisch in een rapport geschreven wordt. 13.9.4 Labo 86: Gebruikersaccounts creëren Met het volgende script wordt een gebruikersaccount aangemaakt. Het initieel wachtwoord is hetzelfde als de gebruikersid. Op de server wordt meteen een persoonlijke map (home directory) voor de gebruiker gecreëerd. Option Explicit Dim Dim Dim Dim Dim Dim Dim Dim strDomein strServer 'voor de home directory strUserid strVolledigeNaam strWachtwoord strGroep objDomein objGebruiker strDomein = "MijnDomein" strServer = "MijnServer" strUserid = "jansmits" strVolledigeNaam = "Jan Smits" strWachtwoord = "jansmits" Set objDomein = GetObject("WinNT://" & strDomein) Set objGebruiker = objDomein.Create("user", strUserid) VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 279 With objGebruiker .FullName = strVolledigeNaam .HomeDirectory = "\\" & strServer & "\" & strUserid & "$" .SetInfo .setPassword(strUserid) End With WScript.Echo "De gebruiker is aangemaakt" De methode SetInfo is nodig om de wijzigingen ook daadwerkelijk door te voeren. Bij het toevoegen van de gebruiker aan de groep wordt de eigenschap ADsPath gebruikt. De waarde is van het type string, hoofdlettergevoelig, en identificeert het object op een unieke manier in de directorystructuur. In dit geval is de waarde van ADsPath iets als "WinNT://MijnDomein/jansmits". Het argument van Getobject() is eigenlijk ook een ADsPath. Meer voorbeelden vind je in het ADSI Helpbestand: ADSI Reference, ADSI System Providers, ADSI WinNT Provider, WinNTADsPath. Pas de code in GebruikerAanmakenNT.vbs aan met gegevens die passen in jouw netwerkomgeving en voer het script uit. Pas het script aan zodat de gebruikergegevens doorgegeven worden als parameters. Pas het script aan zodat meerdere gebruikers kunnen aangemaakt worden, waarvan de gegevens ingelezen worden uit een MS-Exel bestand. Raadpleeg het ADSI Helpbestand voor bijkomende informatie over het User object en voorbeelden van gebruikersbeheer: ADSI Reference, ADSI System Providers, ADSI WinNT Provider, WinNT User Object. 13.9.5 Labo 87: Bewerkingen met gebruikers en groepen Maak een script om een groep klas5IB bij te maken. Voeg de gebruiker Jan Smits toe aan de groep klas5IB. Zorg er voor dat een uitgeschakelde account geactiveerd wordt. Verander via een script het wachtwoord van Jan Smits. 13.10 Het Windows 2000 Schema 13.10.1 Labo 88: Win2000 objecthiërarchie In Windows NT moet je verschillende tools gebruiken voor gebruikersbeheer, computerbeheer enz. In Windows 2000 worden alle administratieve taken gedaan in de Microsoft Management Console. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 280 Open Microsoft Management Console en voeg de module toe om het schema van Active Directory te bekijken indien dit nog niet geïnstalleerd is. Hiervoor moet eerst en vooral Adminpak geïnstalleerd zijn. Maak de module omhet schema van Active Directory te bekijken actief. Je krijgt een overzicht van het Windows 2000 schema en de domeinhiërarchie (linkervenster). Selecteer in het linkervenster Kenmerken. In het rechtervenster krijg je een lijst van alle kenmerken (eigenlijk eigenschappen en methodes) in het schema met hun naam, gegevenstype en een korte beschrijving. Als je map Klassen openschuift, worden alle objecten in het schema getoond. Selectie van een object in het linkervenster resulteert in het rechtervenster in de lijst van eigenschappen behorend bij dit object. Op die manier bekom je per klasse de eigenschappen en methodes en niet in een onoverzichtelijke lijst. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 281 Raadpleeg het ADSI Helpbestand voor bijkomende informatie: ADSI Version 2.5, ADSI Reference, ADSI System Providers, ADSI LDAP Provider. 13.10.2 Labo 89: Informatie opvragen Het script Informatie2000.vbs geeft een overzicht van de domeinen, gebruikers, computers en groepen van het Windows 2000-netwerk. Option Explicit Dim objLDAP Dim objTopItem set objLDAP = GetObject("LDAP://MijnServer") On Error Resume Next For Each objTopItem in objLDAP ToonInformatie objTopItem Next WScript.quit sub ToonInformatie(objTop) Dim objItem Dim objServerItem WScript.echo "Hier volgen de gegevens van: For Each objItem in objTop WScript.Echo "Klasse: " & objItem.Class & Select Case objItem.Class Case "User" WScript.echo " Volledige naam: " & WScript.echo " Volledige naam: " & VVKSO Ondersteuning Informaticabeheer " & objTop.ADSPath ", Naam: " & objItem.Name objItem.get("cn") objItem.get("givenName") Beheer van een servergestuurd netwerk met Windows 2000 - 282 WScript.echo " Persoonlijke map: " & objItem.get("homeDirectory") WScript.echo " Login Script: " & objItem.get("loginScript") WScript.echo " Profiel: " & objItem.get("profilePath") WScript.echo " Laatste login: " & formatdatetime(objItem.LastLogin) Case "Computer" WScript.echo " Eigenaar: " & objItem.Owner WScript.echo " Afdeling: " & objItem.Division WScript.echo " Besturingssysteem: " & objItem.OperatingSystem WScript.echo " Versie: " & objItem.OperationSystemVersion WScript.echo " Processor:" & objItem.Processor WScript.echo " Servers: " For Each objServerItem in objItem WScript.echo " " & objServerItem.Class & ", " & objServerItem.Name Next Case "Group" WScript.echo " Beschrijving: " & objItem.Description Case "OrganizationalUnit" WScript.echo vbCRLF WScript.echo " Beschrijving: " & objItem.Description ToonInformatie objItem Case "Container" WScript.echo vbCRLF WScript.echo " Beschrijving: " & objItem.Description ToonInformatie objItem End Select Next End sub Het script maakt gebruikt van een subprocedure met één parameter: ToonInformatie met parameter objTop. De subprocedure is recursief, d.w.z. ze roept zichzelf op. De waarde van de eigenschappen wordt in het script op twee verschillende manieren opgevraagd: met de Get-methode en op de klassieke wijze. Voer het script uit in een MS-DOS venster met CScript. Sla de uitvoer op in een tekstbestand. 13.10.3 Labo 90: Gebruikersaccounts creëren Een User object in Windows 2000 heeft heel wat meer eigenschappen dan hetzelfde object in WinNT. Raadpleeg het ADSI Helpbestand voor bijkomende informatie: ADSI Reference, ADSI System Providers, ADSI LDAP Provider, LDAP User Object. Het script GebruikerAanmaken2000.vbs waarvan je de code hieronder vindt, verschilt dan ook enigszins van het gelijkaardige script GebruikerAanmaken NT.vbs. Option Explicit Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim strServer 'voor de home directory strUserid strVoornaam strFamilienaam strWachtwoord strGroep strOrganisatie strBeschrijving objOrganisatie objDir VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 283 Dim objDomein Dim objGebruiker Dim objGroep strOrganisatie = "MijnOrganisatie" strServer = "MijnServer" strUserid = "jansmits" strVoornaam = "Jan" strFamilienaam = "Smits" strWachtwoord = "jansmits" strBeschrijving = "MijnBeschrijving" strGroep = "MijnGroep" Set objDir = GetObject("LDAP://RootDSE") Set objDomein = GetObject( "LDAP://" & objDir.Get("defaultNamingContext")) Set objOrganisatie = objDomein.GetObject("organizationalUnit", strOrganisatie) Set objGebruiker = objOrganisatie.Create("user","cn=" strVoornaam & " " & strFamilienaam) With objGebruiker .samAccountName = strUserid .description = strDescription .givenName = strFamilienaam .sn = strVoornaam .displayName = strVoornaam & " " & strFamilienaam .homeDrive = "H:" .homeDirectory = "\\" & strServer & "\" & strUserid & "$" .accountDisabled = False .SetInfo .setPassword(strUserid) End With set objGroep = objDomein.GetObject("group", strGroep) objGroep.add(objGebruiker.ADSPath) WScript.Echo "De gebruiker is aangemaakt" In het bovenstaande script wordt een gebruiker aangemaakt een krijgen enkele eigenschappen een waarde. Je bent niet verplicht aan alle eigenschappen expliciet een waarde toe te kennen. Dit is enkel zo voor CN (common name) en SamAccountName. Als de andere eigenschappen niet expliciet een waarde krijgen, wordt de gebruiker gecreëerd met een GUID en SID en de volgende standaard waarden. Eigenschap FullName GivenName sn UserPrincipalName Password UserMustChangePassword UserCannotChangePassword PasswordNeverExpires AccountDisabled Group Profile AccountNeverExpires Waarde Leeg Leeg Leeg Leeg Leeg TRUE FALSE FALSE TRUE Domain User Leeg TRUE De SamAccountName is de naam die gebruikers die zich aanmelden op niet Windows 2000 werkstations gebruiken. UserPrincipalName is de Windows 2000 aanmeldingsnaam. De objectbinding in het script GebruikerAanmaken2000.vbs gebeurt op een andere manier dan in GebruikerAanmakenNT.vbs. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 284 Set objDir = GetObject("LDAP://RootDSE") Set objDomein = GetObject( "LDAP://" & objDir.Get("defaultNamingContext")) Set objOrganisatie = objDomein.GetObject("organizationalUnit", strOrganisatie) Active Directory ondersteunt serverloze binding. D.w.z. dat je geen server moet specificeren als je toegang zoekt tot Active Directory van het domein van de ingelogde gebruiker. Als de binding verwerkt wordt, zoekt ADSI de beste Windows NT Domain Controller in het domein van de ingelogde gebruiker. In LDAP is rootDSE gedefiniëerd als de root van de informatiestructuur op een directory server. Het doel van rootDSE is informatie verschaffen over de server. Meer informatie hierover vind je in het ADSI Helpbestand: Active Directory,Active Directory Programmer's Guide, Binding, Serverless Binding and RootDSE. In de bovenstaande programmaregels wordt eerst het domein bepaald waaronder het huidige werkstation werkt en daarna wordt er overgeschakeld naar de aangeduide Organizational Unit. De gebruikersaccount wordt daarna gecreëerd zoals in Windows NT, maar hier met CN (common name). Pas het bovenstaande script aan met gegevens die toepasselijk zijn op de netwerkomgeving waarin je werkt en voer het uit. 13.10.4 Labo 91: Gebruikersaccounts bewerken met LDAP Schrijf een script voor het activeren van een account van een gebruiker in een organistatie-eenheid. Maak een script voor het toevoegen van een groep in de organisatie-eenheid. Maak een script voor het toevoegen van een gebruiker aan een groep, in een organisatie-eenheid. Verander via een script het wachtwoord van een gebruiker die zich in een organisatie-eenheid bevindt. VVKSO Ondersteuning Informaticabeheer Beheer van een servergestuurd netwerk met Windows 2000 - 285