9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een...

25
147 9 PowerShell en VBScript 9.1 PowerShell Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre- gel die speciaal ontworpen is voor systeembeheer en gebaseerd is op Microsoft .NET Framework. Met de ingebouwde Windows PowerShell-opdrachten, ook wel cmdlets genoemd, kan je de com- puters in een netwerk beheren vanaf de opdrachtregel. Ook biedt Windows PowerShell een uitge- breide parser voor expressies en een volledig ontwikkelde scripttaal. PowerShell biedt ook onder- steuning voor bestaande scripts en opdrachtregelprogramma's. 9.1.1 Windows PowerShell Integrated Scripting Environment (ISE) De Powershell die je terugvindt in de taakbalk is een ‘command line interface shell’. Zinvol om korte commando’s uit te voeren, maar niet direct geschikt om meerdere opdrachten na elkaar uit te voeren en eventueel te bewaren. Veel zinvoller is het om instructies in te geven in de Windows PowerShell Integrated Scripting Environment (ISE). Dit is een grafische hosttoepassing om opdrachten uit te voeren en scripts te schrijven, te bewerken, uit te voeren, te testen en de fouten in die scripts op te lossen in een omgeving die Unicode ondersteunt en waarin de syntaxis met kleuren wordt weergegeven. Deze toepassing moet geïnstalleerd worden. < Installeer ISE < Start de ‘Server Manager’ < Klik op ‘Features’ < Klik op ‘Add Features’ < Selecteer: Windows Powershell Integrated .. < ‘Klik op Next’ PowerShell en VBScript, hst. 9 Een servergestuurd netwerk (Windows 2008 R2)

Transcript of 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een...

Page 1: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

147

9 PowerShell en VBScript

9.1 PowerShell

Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal ontworpen is voor systeembeheer en gebaseerd is op Microsoft .NET Framework.

Met de ingebouwde Windows PowerShell-opdrachten, ook wel cmdlets genoemd, kan je de com-puters in een netwerk beheren vanaf de opdrachtregel. Ook biedt Windows PowerShell een uitge-breide parser voor expressies en een volledig ontwikkelde scripttaal. PowerShell biedt ook onder-steuning voor bestaande scripts en opdrachtregelprogramma's.

9.1.1 Windows PowerShell Integrated Scripting Environment (ISE)

De Powershell die je terugvindt in de taakbalk is een ‘command line interface shell’. Zinvol omkorte commando’s uit te voeren, maar niet direct geschikt om meerdere opdrachten na elkaaruit te voeren en eventueel te bewaren.

Veel zinvoller is het om instructies in te geven in de W indows PowerShell Integrated ScriptingEnvironment (ISE). Dit is een grafische hosttoepassing om opdrachten uit te voeren en scriptste schrijven, te bewerken, uit te voeren, te testen en de fouten in die scripts op te lossen in eenomgeving die Unicode ondersteunt en waarin de syntaxis met kleuren wordt weergegeven.

Deze toepassing moet geïnstalleerd worden.

< Installeer ISE

< Start de ‘Server Manager’

< Klik op ‘Features’

< Klik op ‘Add Features’

< Selecteer:

Windows Powershell Integrated ..

< ‘Klik op Next’

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 2: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

148

< Klik op ‘Install’

< vervolgens op ‘Close’

< Sluit de ‘Server Manager’

< Open ‘Accessoires’, Windows PowerShell

< Voeg een snelkoppeling toe aan het ‘Start Menu’

Gebruik best de 64-bit versie!

< Start Windows PowerShell ISE

< Tik in:

(Get-ChildItem C:\Windows).Count

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 3: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

149

9.1.1.1 Script aanmaken (MapKopiëren)

< Kopieer de map ‘MapTV’ van de server (netlogon) naar alle clients (C:\)

< Plaats de map ‘MapTV’ in de map’ NetLogon’

(\\windows7server\netlogon)

< Geef in:

# Kopiëren van mappen en bestanden# <uw naam># <huidige datum>

$bron = “\\windows7server\netlogon\MapTV”$bestemming = “C:\”

copy-item -path $bron -destination $bestemming -recurse

< Bewaar het programma (MapKopiëren.ps1)

< Start het programma

Je krijgt volgende foutmelding:

W issen

resultaatvenster

Starten

programma

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 4: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

150

Een argument om PowerShell te gebruiken en geen VBScipt is veiligheid. VBScript wordt overhet algemeen omschreven als zeer onveilig en gevaarlijk.

In PowerShell is dit heel simpel opgelost: scripts zijn gewoonweg verboden...

Dit wordt geregeld door een policy, nl. de ‘Execution Policy’

< Tik in: ‘Get-ExecutionPolicy’

Resultaat: Restricted

Om toch PowerShell-scripts uit te voeren moet dit aangepast worden. De mogelijkheden:

• AllSignedScripts (zelfgemaakte scripts of gedownloade) worden maar uitgevoerd op voorwaardedat het script afkomstig is van een ‘vertrouwde uitgever’ (Trusted Publisher). Een zelfge-schreven script toevoegen aan deze groep gebeurt door een eigen certificaat aan te ma-ken

• RemoteSignedVoer alle zelfgeschreven scripts uit en gedownloade scripts die afkomstig zijn van eenvertrouwde uitgever

• UnrestrictedAlle scripts worden uitgevoerd. Voordat gedownloade en niet ondergetekende scriptsworden uitgevoerd wordt een bevestiging gevraagd

< Tik in: ‘Set-ExecutionPolicy RemoteSigned’

9.1.1.2 Aanmaken ‘Group Policy’

Deze ‘Policy’ moet uitgevoerd worden op een OU met computers als inhoud. Computers ineen domein worden standaard in de map ‘Computers’ geplaatst (geen OU!)

< Maak een OU aan per lokaal en plaats daarin de computers uit dat lokaal

< Kopieer het programma naar:

Netlogon

< Open ‘Group Policy Management’

< Maak een nieuw ‘Group Policy Object:’

MapKopiëren

< Klik op ‘OK’

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 5: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

151

< Klik rechts op ‘MapKopiëren’

< Klik op Edit

< Ga naar:

• Computer Configuration

• Policies

• Windows Settings

• Scripts (Startup/Shutdown)

< Dubbelklik op ‘StartUp’

< Verander van tabblad!

< Klik op ‘Add’

< Geef in:

\\windows7server\netlogon\MapKopiëren.ps1

< Klik op ‘OK’

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 6: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

152

< Koppel de GPO aan een OU met computers als inhoud

en .... GPUpdate /force niet vergeten

Het resultaat op de client.

Door de ingestelde rechten is het onmo-gelijk dat een gewone gebruiker de mapverwijdert.

9.1.2 Een map koppelen aan een stationsletter voor een groep

Met ‘Group Preferences’ is het mogelijk om een map te koppelen aan een OU.

Dit is waarschijnlijk de bedoeling niet omdat men een ‘VakMap’ wil die gekoppeld is aan eenleerkracht voor een groep leerlingen. Zo’n ‘VakMap’ is interessant omdat de leerkracht lees-en schrijfrechten kan hebben op de map en de groep leerlingen enkel leesrechten.

Het is dan ook voldoende dat de leerkracht een bestand in de map plaatst om dit bestand on-middellijk te distribueren naar alle leerlingen. Dit is eveneens mogelijk via een elektronischleerplatform, maar dan moeten alle leerlingen wel inloggen en het bestand downloaden. Eenprobleem als dit bestand vrij groot is en de Internetbandbreedte beperkt is.

Anderzijds is het omgekeerde niet mogelijk. Leerlingen kunnen geen bestand ‘posten’ in dezemap met enkel en alleen exclusieve schrijfrechten. In principe is het via geavanceerde be-veiligingsrechten wel mogelijk om dit in te stellen, maar met een grote groep (één klas) looptdit hopeloos vast.

Werkwijze:

• Maak een groep met alle leerlingen van het eerste jaar (1HA, 1HB) en de leraar Frans (An)

• Maak een map op de server (MapLeer) , met daarin de map MapEerstes.

• Deel de map ‘MapEerstes’ met leesrechten voor de groep ‘Eerstes’ en lees- en schrijfrechten voor An

• Plaats het script ‘MapDrive.ps1' in de map ‘Netlogon’

• Maak een groepsbeleid

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 7: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

153

! Aanmaken groep

< Klik rechts op ‘groepen’

< Selecteer ‘New’

< Geef in als naam: ‘Eerstes’

< Dubbelklik op ‘Eerstes’

< Ga naar het tabblad ‘Members’

< Ga naar ‘Advanced...’

Het script controleert geen‘genestelde’ groepen. M.a.w.de groep ‘Eerstes’ laten be-staan uit de groep ‘1HA’ en‘1HB’ is foutief!

< Klik op ‘ Columns...’

< Voeg toe ’Logon Name’

< Klik op ’Find Now’

< Selecteer de eerste tot de laatste

naam die begint met ‘1H...’

< Vergeet niet om ook ‘An’ tot de

groep toe te voegen

Deze methode kun je natuurlijk alleen maar gebruiken als de login-naam begint met iets dat ver-wijst naar de groep die je wil samenstellen. Is dit niet het geval en wil je werken met bestaande groe-pen dan moet het script aangepast worden (zie verder):

if($memberOf -contains $group) wordt dan:

if($memberOf -contains '1HA'-or $memberOf -contains '1HB' -or $memberof -contains 'Leraars')

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 8: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

154

! Aanmaken gedeelde map

< Maak op de data-partitie de map ‘MapLeer’

< Maak daarin de map ‘MapEerstes’

< Klik rechts op ’MapEerstes’

< Klik op ‘Share with, Specific people...’

< Geef in:

Eerstes

An

< Verander ‘Permission Level’

voor An naar ‘Read/Write’

< Klik op ‘Share’

! Het script

6

8

11

Instructie nodig om boodschap te kunnen afdrukken (Forms)

Begin van de tekst van de boodschap

Koppeling met W Script voor koppelen stationsletter aan een gedeelde map

16 Krachtige instructie om van een gebruiker de verschillende groepslidmaatschappen te bepalen

Lijn 15, 18 en 19 zijn toegevoegd om de ‘-replace’- functie toe te lichten en mogen verwijderd worden

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 9: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

155

Dit gedeelte dien je zoveel keren te kopi-eren als er mappen zijn die je wenst tekoppelen.

Vergeet niet om elke keer eenandere stationsletter te kiezen!

23

24

26

30

33

De naam van de groep waarvoor de map moet gekoppeld worden.

Selectie of de gebruiker die is ingelogd ook deel uitmaakt van de groep

Te gebruiken stationsletter

Nagaan of de stationsletter niet in gebruik is. Zo ja, dan wordt de bestaande koppeling verwijderd

De koppeling wordt uitgevoerd

79

81

De spatie op het einde van ‘$boodschap wordt verwijderd

Als er geen mappen gekoppeld worden dan wordt de tekst ‘geen’ weergegeven

! Group Policy

< Maak een nieuw ‘Group Policy Object’ (MapDrive)

< Klik rechts, Edit

< Ga naar:User ConfigurationPoliciesW indows SettingsScripts (Logon/Logoff)

< Dubbelklik op ‘Logon’

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 10: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

156

< Ga naar het tabblad:PowerShell Scripts’

< Klik op ‘Add’

< Geef in bij ‘Script Name:’

\\windows7server\netlogon\MapDrive.ps1

< Klik op ‘OK’

< Klik op ‘OK’

< De GPO moet gekoppeld worden aan de OU

leerlingen en leraars. Dit kan perfect, maar

je kan ook kiezen voor één niveau hoger en

de GPO koppelen aan het domein

< Vergeet niet .... jawel!

! Resultaat:

De gebruiker krijgt volgende boodschap te zien:

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 11: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

157

9.2 VBScript

VBScipt is eveneens een tekstdocument met de extensie .vbs. Alhoewel het perfect mogelijk is omscripts te schrijven in kladblok, is dit niet direct aangewezen omdat bij een eventuele foutmeldingsteeds verwezen wordt naar een lijnnummer. In tegenstelling tot PowerShell bevat Windows geentool om VBScript-programma’s te editeren.

Er is wel een zeer handige tool op de markt, VbsEdit van ‘AderSoft’. De laatste versie bevat ook eenmogelijkheid om van het script een uitvoerbaar programma te maken (.exe). Hierdoor vervallen veelargumenten om VBScript niet te gebruiken. Het bestand is dan niet meer leesbaar en aanpasbaar.

Opmerkingen:

• Je hebt de keuze tussen CScript en WScript (zie verder)

• Je kan omzetten naar een 32- of 64-bit applicatie

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 12: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

158

9.2.1 Herstellen wachtwoord

Een veel voorkomend probleem (zeker na een vakantieperiode) is dat een gebruiker zijn wacht-woord vergeten is. In de meeste gevallen moet dit ook onmiddellijk kunnen opgelost worden, wantanders kan de desbetreffende gebruiker niet verder. Deze taak overlaten aan de systeembeheer-der is niet zinvol, hij/zij moet dan continue bereikbaar zijn en ook bij de identificatie van de gebruikerzijn er problemen. Is de aanvrager wel echt de gebruiker waarvan het wachtwoord moet hersteldworden? We laten deze taak dan ook over aan de begeleidende leraar ...

Werkwijze:

• Plaats de leraar (of de groep van leerkrachten) in de groep ‘Account Operators’

• Deel een map, met enkel leesrechten voor die gebruiker of groep

• Plaats in die map het programma HerstelWachtwoord.vbs

• Voer het programma uit

Zorg ervoor dat dit programma eventueel gekopieerd wordt naar de persoonlijke map ‘MijnDocumenten’ van de leerkracht. Wanneer dit programma niet regelmatig gebruikt wordt, zalmen de locatie vergeten en dit terugvinden op de server is niet zo eenvoudig.

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 13: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

159

9.2.1.1 Account Operators

< Open de console, ‘Active Directory Users and Computers’

< Open de map ‘Builtin’

< Open de groep ‘Account Operators’

< Klik op het tabblad ‘Members’

< Voeg de groep ‘leraars’ toe

< Klik op ‘OK’

9.2.1.2 Gedeelde map

< Maak op de server (data-partitie) de map

‘HerstelWachtwoord’

< Plaats in deze map het programma ‘Herstel-

Wachtwoord.vbs’

< Deel deze map met ‘Full Control’-rechten

voor de Administrator

< Deel deze map met ‘Read’-rechten voor de

groep leraars

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 14: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

160

9.2.1.3 HerstelWachtwoord.vbs

Rem AccountontgrendelenRem Nieuw wachtwoord instellenRem Luc DecuyperRem 2003-02-19

Dim objDirDim objDomeinDim DomainName

Rem Domein bepalen

Set objDir = GetObject("LDAP://RootDSE")Set objDomein = GetObject( "LDAP://" & objDir.Get("defaultNamingContext"))DomainName = objDomein.nameDomainName = mid(DomainName,4)

Rem Ingave account om te bewerkenUserName = InputBox("Geef de loginnaam van de account: ")

Rem Account deblokkerenSet UserObj = GetObject("WinNT://"& DomainName &"/"& UserName &"")If UserObj.IsAccountLocked = -1 then UserObj.IsAccountLocked = 0 UserObj.SetInfo Fout = FalseElse Fout = TrueEnd if If Fout Then Wscript.Echo "Account was niet geblokkeerd."Else Wscript.Echo "De account is opnieuw actief!"End If

Rem Nieuw wachtwoord instellenSet objDomein = GetObject("WinNT://" & DomainName)Set objGebruiker = objDomein.GetObject("user",UserName)

objGebruiker.setPassword "Test123"objGebruiker.setinfo

wscript.echo "Het wachtwoord staat terug op 'Test123'"

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 15: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

161

Rem Verplicht wijzigen aanzettenUserFlags UserName, DomainName,1, false, true, false,false

Rem Routine FlagsSub UserFlags(strUser,strDomain,strPassexpires,strNochange,strNoexpire,strDisable,strLocked)

Dim UserDim flags

Set User = Getobject("WinNT://" & strDomain & "/" & strUser & ",user")

Flags = User.Get("UserFlags")

User.put "PasswordExpired",strPassexpires

User.Accountdisabled = strDisable

if strNochange = "true" then User.put "UserFlags", Flags OR &H00040End if

If strNoexpire = "true" thenUser.put "Userflags", flags OR &H10000end if

User.IsAccountLocked = strLocked

User.setinfo

Set User = nothing

End Sub

Opmerkingen:

• Het programma werd geschreven voor Windows Server 2000. De scripttaal is ondertussenuitgebreid, dus kan het best zijn dat dit programma korter en krachtiger kan, maar het werkt al-vast. Vermoedelijk kan dit in PowerShell veel korter. In de bijlage is een klein programma toege-voegd die het wachtwoord van de gebruiker reset. Er moet nog gezocht worden naar een metho-de om de loginnaam van de gebruiker in te geven en een mogelijkheid om dit te laten uitvoerendoor de groep ‘Leraars’

• Er is geen controle of de ingegeven naam wel bestaat. Ook als in de ‘Inputbox’ op ‘Annuleren’wordt geklikt komt er een foutmelding.

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 16: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

162

9.2.1.4 Controle

• Log in op de client als leraar (An b.v.)

• Open Windows Verkenner

• Geef in de adresbalk het volgende in:

\\windows7server

De lijst met de gedeelde mappen verschijnt

• Open de map ‘HerstelWachtwoord’ en start het programma

• Geef de gebruikersnaam in

(vb. 1HA.Tim)

Het programma antwoordt met de volgende mededelingen:

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 17: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

163

9.3 Rechten op mappen of bestanden

Een belangrijk onderdeel naar beveiliging toe is het correct instellen van de rechten van gebruikersop mappen of bestanden bij NTFS.

Hiervoor kunnen twee programma’s gebruikt worden, nl. cacls.exe en xcacls.vbs.

• Het programma cacls.exe is terug te vinden in de ‘System32-directory’ vanaf NT4. Dit program-ma gebruiken we om rechten in te stellen op de clients

• xcacls.vbs (bestaat ook onder de vorm van een .exe) is een onderdeel van de ‘Resoucre Kit’vanaf Windows 2000. Met dit programma zijn er meer mogelijkheden dan met cacls. We gebrui-ken dit programma om de rechten in te stellen van de leerlingenmappen op de server.

Opmerking:

Vanaf de versie 2008 is er een nieuw programma ’icacls’. Hiermee is nog onvoldoende geëxperi-menteerd.

9.3.1 Mappen

De mappen van de gebruikers (in DocLeer) worden omgeleid naar de server. Gebruiken we ma-pomleiding (zie 8.2.2) dan wordt de gebruiker in principe eigenaar van zijn map ‘Mijn documenten’op de server en worden bovenliggende rechten niet overgenomen.

Bij het aanmaken van de GPO hebben we deze ‘Grant’-rechten aangepast (verwijderd) waardooriedereen nu in deze mappen kan lezen, schrijven, verwijderen ...

... dit wijzigen is best zinvol ...

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 18: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

164

9.3.2 Mogelijke foutmelding

W ordt er vergeten om de ‘Grant’-rechten te ver-wijderen bij mapomleiding en wil men als admini-strator toch toegang tot deze map dan zal dezemelding verschijnen:

Dit kan vrij eenvoudig opgelost worden door heteigenaarsschap opnieuw over te nemen. De fout-melding komt daarna niet meer voor, ook niet alser nieuwe gebruikers worden toegevoegd.

< Klik op de gedeelde map (DocLeer)(in het voorbeeld:DocLkr)

< Klik op Security, Advanced, Owner

< Plaats een vinkje bij:‘Replace owner on subcontainers and objects’

Er komt een waarschuwing:

< Klik op ‘Yes’

9.3.3 Gebruik van xcacls.vbs

De laatste versie van xcacls.vbs is te downloaden via het Internet. Het programma wordt uitgepaktvia ‘Xcacls_Installer.exe’. Deze versie is iets recenter dan xcacls.exe dat deel uitmaakt van de ‘Re-source Kit’(zie ook: http://support.microsoft.com/kb/825751).

Er zijn twee ‘scriptengines’, WScript en CScript. Standaard wordt wscript gebruikt, maar xcacls.vbswerkt beter met cscript. Verander daarom de standaardinstelling naar cscript:

In te geven via de ‘Command prompt’ : cscript.exe /h:cscript

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 19: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

165

Te gebruiken syntax:

xcacls E:\Docleer\1HA.Karim /G <naam1>:F <naam 2>:M /F

Verklaring:

Aan de map ‘E:\Docleer\1HA.Karim’ wordt aan de volgende gebruiker (naam1) ‘Full Control’ rech-ten toegekend (:F) en aan de gebruiker naam2 ‘Modify’-rechten

/G = Grant

/F = wordt gebruikt in combinatie met mappen. De rechten op alle onderliggende bestanden enmappen worden aangepast. Om bestanden in onderliggende mappen ook aan te passen moetin principe ook /T (of /T /S) gebruikt worden. Na controle blijkt dit evenwel niet nodig te zijn.

<naam1> = <de ‘NetBios-naam’ van het domein>/Administrator (vb.: school/Administrator)

<naam2>= <de ‘NetBios-naam’ van het domein>/<loginnaam van de gebruiker> (voorbeeld: school/1HA.Karim)

9.3.3.1 Aanmaken rekenblad

De rechten op de mappen kunnen maar aangepast worden nadat alle gebruikers zich hebben aan-gemeld. Deze namen gaan we eerst in een tekstbestand plaatsen en daarna invoeren in een reken-blad. Om deze namen te bekomen zijn er twee mogelijkheden:

• Gezien de namen van de mappen overeen komen met de loginnamen kan een script gebruiktworden (LoginNamen.vbs) om deze namen in een tekstbestand te plaatsen.

• Een andere (eenvoudigere) methode is de namen van de mappen uitlijsten (dir) zonder bijko-mende gegevens (/b) en doorsturen (>) naar een tekstbestand

Syntax: DIR /B > C:\Namen.txt

(in te voeren via de ‘Command Prompt’ opdezelfde plaats van de uit te lijsten mappen)

Deze methode biedt bovendien het voordeel dat de namen in ‘MS-DOS’-schrijfwijze wordenweergeven zodat het resultaat rechtstreeks in een tekstbestand kan geplaatst worden vooruitvoering. Bewaren via MS-Word (zie 6.4.1.2) is dan niet nodig.

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 20: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

166

< Open het rekenblad ‘LijstXcacls.xls’

A2xcacls, gevolgd door het ‘path’ van de map waarvan de rechten moet veranderd worden

Let op het aanhalingsteken!

B2 Grant ‘Full control’ aan de administrator

C2 De ‘NetBios’ -naam van het domein

D... De aangemaakte instructie

< Kopieer de inhoud van kolom F naar een tekstbestand (aanmaken via kladblok)

< Voeg als laatste instructie ‘Pause’ toe

< Bewaar en verander de extensie (.txt) naar .cmd

< Voer het bestand uit (dubbelklikken)

9.4 Aanpassen rechten software

Alle software die ontwikkeld wordt voor Windows XP moet in principe voldoen aan een aantal af-spraken zoals:

• de installatie moet gebeuren in de map ‘\Program Files\ ‘• ‘programma verwijderen’ moet voorzien zijn• alle individuele instellingen moeten in de persoonlijke map van de gebruiker terecht komen• .....

Vulgariserend wordt weleens gezegd ‘het moet een netwerkversie zijn’, maar een aantal pakkettendie een zgn. netwerkversie zijn beantwoorden niet aan bovenstaande eisen (o.a. het boekhoudpak-ket ProAcc), maar zijn wel installeerbaar via het netwerk.

Talrijke andere pakketten (vooral didactische) zoals Bob, ‘De Computer en Wij’, Fvisem, Azerty-typ,... installeren zichzelf gewoon in de root van de systeemschijf en werken maar als de gebruiker schrijfrechten heeft op de installatiemap en/of sommige bestanden.

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 21: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

167

Om zo’n programma’s toch te kunnen gebruiken kunnen we deze schrijfrechten geven aan degroep gebruikers van dit programma. Dit voorkomt de noodzaak om schrijfrechten te moeten toe-kennen aan de volledige schijf.

Dit is wel een oplossing, maar het voorkomt niet dat een gebruiker het bestand of de map kan‘verknoeien’. Gebeurt dit in zijn eigen persoonlijke map dan zijn de gevolgen voor de gebruikerzelf, gebeurt het hier dan zal het programma hoogst waarschijnlijk niet meer werken.

Bij een aantal programma’s (Bob, De Computer en W ij, ...) is het nodig dat de gegevens individu-eel bewaard worden en een gebruiker een volgende keer met deze gegevens kan verder werken. Dit kan niet zomaar in het programma zelf, want een volgende gebruiker krijgt dan deze gege-vens te zien....

In zo’n geval wordt het echt moeilijk. W el kunnen deze programma’s in de meeste gevallen hundata bewaren op een ander station (is meestal voorzien voor het diskette-station, maar een an-dere stationsletter is ook mogelijk). Plaats de (basis)gegevens dan ook in de map ‘Mijn documen-ten’ en zorg ervoor dat bij het aanmelden van de gebruiker er een script gestart wordt dat de kop-peling maakt tussen deze gegevens en een stationsletter (zie MapDrive).

.... probeer het gebruik van dergelijke programma’s te vermijden ...

9.4.1 Voorbeeld: installatie ProAcc

Om de mogelijke werking van zo’n script te illusteren bekijken we de installatie van het boekhoud-pakket ProAcc.

Werkwijze:

• Installeer het pakket via de aanwezige .msi

• Kopieer enkele bestanden die tijdens de installatie niet ingesteld werden

• Geef de groep gebruikers (ProAcc) schrijfrechten

< Kopieer de software naar de map

‘NetLogon’

< Maak een groepsbeleid voor een

OU die de computers bevat waarop

de software moet komen.

< Klik ‘Rechts’ op ‘Software in-

stallation’ en kies ‘New ’

Niet ‘Properties’ !

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 22: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

168

Zorg ervoor dat je het correctepad opgeeft waar de softwarezich bevindt!

W el: \\<naam server>\NetLogon\...

Niet: C:\.....

Het .msi-pakket bevat de nodige instel-lingen voor installatie, maar...

< Klik op ‘Deployment, Advanced’

< Plaats een vinkje bij:

‘Ignore language when deploying

this package’

Doe je dit niet dan zal de installatie nietslagen als je een Nederlandstalig pakketinstalleert vanaf een Engelstalige ser-ver.

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 23: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

169

Problemen:

• Na de installatie ontbreken er twee bestanden, ‘serial.txt’ en ‘ProAccc.ini’

Het ‘ .ini-bestand’ moet zo ingesteld worden dat bij het starten van het programma er gevraagd wordtnaar het gegevensbestand (.df1) in de map ‘Mijn documenten’ (zie handleiding ProAcc)

• De gebruiker moet schrijfrechten hebben op ‘ProAcc.lbr’ en’ ProAcc.oif’

• Hiervoor gebruiken we cacls met ‘Grant’-rechten :C (schrijven), voor de (beveiligings)groep GrpPro-Acc. (Dit is een groep die alle gebruikers bevat die met ProAcc moeten werken).

Het volgend script biedt hiervoor een oplossing:

'Kopiëren serienummer en'rechten map ProAcc'Luc Decuyper'2006-03-09

Option Explicit

Dim ObjFso, oShellDim bron, doel

Set ObjFso=WScript.CreateObject("Scripting.FileSystemObject")

Bron = "\\cno50\Netlogon\serial.txt"Doel = "C:\ProAcc\"

objFSO.Copyfile bron, doel

Bron = "\\cno50\Netlogon\ProAcc.ini"Doel = "C:\ProAcc\"

objFSO.Copyfile bron, doel

'--------------------------------------------------------------------'Rechten aanpassen twee bestanden

Set oShell = CreateObject ("Wscript.Shell")

oShell.run "Cacls C:\ProAcc\ProAcc.lbr /E /G GrpProAcc:C"

oShell.run "Cacls C:\ProAcc\ProAcc.oif /E /G GrpProAcc:C"

MsgBox ("De aanpassingen zijn uitgevoerd")

• Om dit script te kunnen uitvoeren zijn er ‘administrator’-rechten nodig. M.a.w. dit is terug eengroepsbeleid dat via ‘Computer Configuration’ moet uitgevoerd worden.

• ‘oShell.run’ start een extern programma (.exe)

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 24: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

170

9.5 Printers aansluiten

Een printer installeren in het netwerk is niet zo eenvoudig. Basisprobleem is dat een printer eengebruikersconfiguratie is en niet een computerconfiguratie.

• Wordt er geen verplicht profiel gebruikt, dan krijgt een nieuwe gebruiker de printerinstellingenmee die in de Default User’ staan. Deze instelling wordt bewaard in zijn profiel.

Werd de printer geïnstalleerd voordat de gebruikers zich de eerste keer hebben aangemeld, danis er geen probleem, in het ander geval wel, want de printer ontbreekt dan in hun profiel en deprinter zal extra moeten toegevoegd worden. Hiervoor bestaan ook scripts, maar deze verande-ren rechtstreeks registerinstellingen. Dit is gevaarlijk en werken soms niet. Bovendien, wat alsde printer defect is en vervangen wordt door een ander type?

• Wordt er wel een verplicht profiel gebruikt dan is het probleem nog groter. Een printer is lokaal-gebonden en kan dus niet in het verplicht profiel opgenomen worden dat geldt voor allegebruikers/computers in het gebouw. Een profiel per lokaal? Een gebruiker kan slechts éénprofiel hebben en als de gebruiker in meerde lokalen een computer moet gebruiken kan het bestgebeuren dat er wordt afgedrukt in het verkeerde lokaal...

De oplossing is vrij eenvoudig, maar netwerkintensief:

• Installeer op een computer alle printers

• Deel deze printers.

(in dit voorbeeld gebeurt dit op de ISA-server)

Gebruik het volgend script om zo’n printer aan een gebruiker toe te voegen bij het opstarten:

'Printers per lokaal' Luc Decuyper'2006-06-02

Dim WshNetwork,PrinterPath, oPrinters

Set WshNetWork = WScript.CreateObject("WScript.Network")

Select Case Ucase(Left(WshNetwork.ComputerName,6))

Case "LOK103"PrinterPath = "\\IsaServer\LOK103"WshNetWork.AddWindowsPrinterConnection PrinterPathWshNetWork.SetDefaultPrinter PrinterPathWscript.Echo("Printer werd geïnstalleerd")

Case "LOK104"PrinterPath = "\\IsaServer\LOK104"

WshNetWork.AddWindowsPrinterConnection PrinterPathWshNetWork.SetDefaultPrinter PrinterPathWscript.Echo("Printer werd geïnstalleerd")

.........

End Select

Bespreking:

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)

Page 25: 9 PowerShell en VBScriptusers.skynet.be/SessieVirussen/cno/Hst9.pdf · Windows PowerShell™ is een nieuw op taken gebaseerde shell- en scripttaal voor de opdrachtre-gel die speciaal

171

• Na het aanmelden wordt de naam van de computer gebruikt om te bepalen in welk lokaal degebruiker zich bevindt

• In een ‘Case’-structuur wordt het voorgestelde ‘PrinterPath’ toegevoegd aan de printers van degebruikers

• Deze printer wordt ingesteld als standaardprinter (SetDefaultPrinterPrinterPath)

• Met het volgend script toe te voegen voor de selectie wordt er een lus gemaakt waarbij eerst eenbestaande printer wordt weergegeven en dan verwijderd. Dit gebeurt zoveel keer als er printers zijn (oPrinters).

'----------------------------------------------Set oPrinters = WshNetWork.EnumPrinterConnections

For i = 0 to oPrinters.count - 1 step 2 wscript.echo OPrinters.item (i) &vtab & oPrinters.item (i + 1)

WshNetwork.RemovePrinterConnection PrinterPathnext

Opmerkingen:

• Deze methode vereenvoudigt zeer sterk het beheer van printers. Het printerbeheer van oudereWindowsversies (Windows XP, Windows Server 2003) is niet zo degelijk als het printerbeheervan de versie Windows Server 2008 (R2). Gebruik best dit besturingssysteem om de gedeeldeprinters op te installeren.

• In principe moet dit script uitgevoerd worden bij het aanmelden. Dit gebeurt meestal met heelveel gebruikers gelijktijdig zodat het netwerk sommige taken niet doorgeeft. Dit is zeer eenvou-dig op te lossen door het programma op de lokale ‘C:\’-schijf te plaatsen en in de groep ‘Opstar-ten’ (Start, Alle programma’s, Opstarten) een snelkoppeling naar dit programma te maken.

• Dit programma werkt maar als de printers aanstaan ...

PowerShell en VBScript, hst. 9Een servergestuurd netwerk

(Windows 2008 R2)