13 Scripts en Windows Scripting Host

advertisement
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
Download