Hoe u taken kunt stroomlijnen met PowerShell-scriptautomatisering
PowerShell is een behoorlijk krachtig hulpmiddel voor het beheren van processen, het automatiseren van taken en al dat soort dingen op Windows-computers. Eerlijk gezegd, als je scripts automatisch wilt uitvoeren – bijvoorbeeld voor back-ups, updates of gewoon routineonderhoud – dan kan PowerShell dat. Het lastige is echter dat Windows een beveiligingsmaatregel heeft die uitvoeringsbeleid heet. Dit beleid fungeert als een soort poortwachter en blokkeert niet-ondertekende bestanden of scripts van internet, tenzij je anders aangeeft. Dat kan vervelend zijn, vooral als je gewoon wat automatisering wilt instellen zonder steeds op ‘ja’ te hoeven klikken of handmatig instellingen te moeten wijzigen.
Het zit zo: je moet eerst het uitvoeringsbeleid verlagen en daarna pas de planning instellen. Anders worden je scripts gewoon niet uitgevoerd of geblokkeerd, wat enorm frustrerend is. Er zijn bovendien verschillende manieren om deze scripts te automatiseren: via de grafische interface van Taakplanner voor de minder technisch onderlegde gebruikers, of via PowerShell zelf als je bekend bent met cmdlets. Hoe dan ook, deze stappen zouden je moeten helpen om dingen automatisch en zonder gedoe te laten uitvoeren (of in ieder geval het gedoe te verminderen).Houd er wel rekening mee dat je in sommige configuraties mogelijk beheerdersrechten of extra machtigingen nodig hebt, afhankelijk van je beveiligingsbeleid.
Hoe automatiseer je PowerShell-scripts?
Stel eerst het uitvoeringsbeleid in, zodat scripts kunnen worden uitgevoerd.
Deze instelling blokkeert in de meeste gevallen de uitvoering van je script. Het is een beetje vreemd, maar als het uitvoeringsbeleid is ingesteld op ‘Beperkt’ (wat meestal de standaardinstelling is), voert PowerShell geen niet-ondertekende scripts uit. Je moet die beveiliging dus op een gecontroleerde manier versoepelen, idealiter alleen voor jouw gebruikers. Om dit te doen, open je PowerShell met beheerdersrechten (zoek naar PowerShell, klik met de rechtermuisknop en kies ‘Uitvoeren als beheerder’ ) en voer je de volgende opdracht in:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Hiermee kunt u scripts uitvoeren die ondertekend zijn of lokaal zijn gemaakt. Op sommige machines krijgt u een prompt waarin wordt gevraagd of u zeker weet dat u het beleid wilt wijzigen. Beantwoord in dat geval gewoon ‘Ja’.Als uw scripts afkomstig zijn van internet of onbetrouwbare bronnen, moet u dit instellen op Unrestricted. Gebruik hiervoor de volgende opdracht:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
Wees hier wel voorzichtig, want Windows maakt het natuurlijk onnodig ingewikkeld. Houd er rekening mee dat deze instelling Unrestrictedalle scripts zal toestaan, wat een beveiligingsrisico kan vormen als je niet oppast.
Methode 1: Taakplanner gebruiken
Dit is voor de meesten de eenvoudigste optie, vooral als je gewoon wilt klikken en verder niets meer wilt doen. Het is een kwestie van klikken, er is geen script nodig. Open ‘Uitvoeren met’ Win + Ren typ vervolgens taskschd.msc. Dat is je toegangspoort tot Taakplanner. Klik vervolgens met de rechtermuisknop op Taakplannerbibliotheek en kies ‘Eenvoudige taak maken’ of ‘Taak maken’ voor meer opties.
- Geef je taak een naam en een korte beschrijving (bijvoorbeeld ‘PowerShell-script automatisch uitvoeren’).Stel op het tabblad ‘ Algemeen ‘ in dat het script moet worden uitgevoerd, ongeacht of je bent aangemeld of niet. Soms moet je ‘Uitvoeren met de hoogste bevoegdheden’ selecteren als je script beheerdersrechten nodig heeft (wat meestal het geval is).
- Stel de trigger in: wanneer je wilt dat dit wordt uitgevoerd. Dagelijks, bij het opstarten, bij het inloggen – wat je maar wilt. Klik op Nieuw, kies je schema en klik op OK.
- Ga vervolgens naar het tabblad Acties, klik op Nieuw en kies vervolgens Een programma starten. Typ in het vak Programma/script
powershellen voeg bij Argumenten toevoegen-File "full\path\to\your\script.ps1"toe. Bijvoorbeeld:-File "D:\Scripts\backup.ps1". Zorg ervoor dat het pad en de bestandsnaam correct zijn, anders wordt het programma niet uitgevoerd. - Pas indien nodig andere instellingen aan, zoals voorwaarden of andere parameters, en klik vervolgens op OK. Klaar.
Dat is het eigenlijk wel — met deze configuratie wordt je script op geplande intervallen of bij specifieke triggers uitgevoerd. Dankzij deze instelling hoef je het niet handmatig te doen en vergeet je niets meer — alleen maar automatisering.
Methode 2: Automatiseer rechtstreeks via PowerShell
Als je graag scripts gebruikt en alles vanuit PowerShell zelf wilt doen, is deze methode iets voor jou. Het is iets complexer, maar wel flexibeler en herhaalbaarder. Eerst moet je een triggerobject aanmaken:
$Trigger = New-ScheduledTaskTrigger -Once -At 4am
Hiermee wordt de taak ingesteld om eenmaal om 4 uur ‘s ochtends te worden uitgevoerd. Wijzig dit -Oncenaar -Dailyof -AtStartupvoor andere triggers. Bijvoorbeeld een dagelijkse uitvoering om de 3 dagen:
$Trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 3 -At 9am
Vervolgens definieer je de actie: wat er gebeurt wanneer de trigger afgaat. Dat is waar het volgende New-ScheduledTaskActionin beeld komt:
$Action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File `"`"
Vergeet niet om ` te vervangen
$User = "YourDomain\YourUser"
Registreer de taak tot slot bij Register-ScheduledTask. Een voorbeeld:
Register-ScheduledTask -TaskName "My PowerShell Auto" -Trigger $Trigger -User $User -Action $Action
Op deze manier kun je alles volledig automatiseren vanuit PowerShell, wat erg handig is als je veel aanpast of installatiescripts automatiseert. Let wel: voor sommige van deze opdrachten heb je mogelijk beheerdersrechten nodig, vooral als je taken maakt die met verhoogde bevoegdheden moeten worden uitgevoerd.
Bij één configuratie ging het de eerste keer helemaal mis – waarschijnlijk door beveiligings- of machtigingsproblemen. Na een herstart of door PowerShell als beheerder uit te voeren, werkte het prima. Soms moet je wat met gebruikersmachtigingen of -beleid experimenteren om het goed te krijgen.
Met al deze instellingen is het vrij eenvoudig om je PowerShell-scripts volgens een schema uit te voeren – dagelijks, bij het opstarten of bij het inloggen – zonder extra muisklikken. Een klein beetje voorbereidend werk, en daarna gaat het vanzelf.