PowerShell-scripts automatiseren met Taakplanner

Microsoft Windows Taakplanner kan u helpen automatisch een programma of PowerShell-script te starten op een bepaald tijdstip of wanneer aan bepaalde voorwaarden is voldaan. U kunt ook het verzenden van e-mails plannen en zelfs het weergeven van bepaalde berichten. In deze blog laten we u zien hoe u vanuit Taakplanner een PowerShell-script kunt uitvoeren dat waarschuwt bij elke software-installatie op een lokale computer.

We zullen ook geplande taken maken met behulp van PowerShell-scripts. U leert hoe:

  • Taken maken met Taakplanner
  • Geplande taken wijzigen of verwijderen
  • Geplande taken maken met PowerShell-scripts.

Taken maken met Taakplanner

Open Taakplanner door op “Windows+R” te drukken en vervolgens “taskschd.msc” in te typen in het venster dat wordt geopend. Voer dan de volgende stappen uit:

1. Klik op “Een taak maken” en voer een naam en beschrijving in voor de nieuwe taak. Om het programma met beheerdersrechten uit te voeren, vinkt u het vakje “Uitvoeren met de hoogste rechten” aan. In ons voorbeeld wijzen we een serviceaccount toe om de taak uit te voeren, en voeren we deze uit ongeacht of de gebruiker is aangemeld.

2. Ga naar het tabblad Triggers en klik op de knop “Nieuw…”. Hier kunt u de voorwaarden opgeven op grond waarvan de taak moet worden uitgevoerd. U kunt de taak bijvoorbeeld laten uitvoeren op schema, bij aanmelden, bij inactiviteit, bij opstarten of wanneer zich een bepaalde gebeurtenis voordoet. Wij willen dat onze taak wordt gestart bij elke nieuwe software-installatie, dus kiezen we “Bij een gebeurtenis” uit het vervolgkeuzemenu en selecteren we “Toepassing” bij de logboekinstellingen. Laat de “Bron” parameter leeg en stel de EventID in op “11707”. Klik op “OK” om de wijzigingen op te slaan.

3. Navigeer naar het tabblad “Acties” en klik op “Nieuw…”. Hier kunt u de acties specificeren die moeten worden uitgevoerd wanneer aan de triggervoorwaarden is voldaan. Je kunt bijvoorbeeld een e-mail sturen of een bericht weergeven. In ons geval willen we een programma starten, dus moeten we het PowerShell-script maken dat we willen uitvoeren en het opslaan met de extensie “ps1”. U kunt het script hier vinden; het zal een waarschuwing sturen met de gebeurtenisdetails over de geïnstalleerde software.

Om het PowerShell-script te plannen, specificeert u de volgende parameters:

  • Actie: Start een programma
  • Programma: powershell
  • Voeg argumenten toe (optioneel): -Bestand

Klik op “OK” om uw wijzigingen op te slaan.

4. Op het tabblad “Voorwaarden” kunt u de voorwaarden opgeven die, samen met de trigger, bepalen of de taak moet worden uitgevoerd. In ons geval moeten we de standaardinstellingen op dit tabblad laten staan.

5. U kunt ook extra parameters voor uw geplande taak instellen op het tabblad “Instellingen”. Voor ons voorbeeld laten we ze echter ongewijzigd.

6. Wanneer de taak volledig is ingesteld, vraagt het systeem u om het serviceaccountwachtwoord. Let op: deze account moet het recht “Aanmelden als batchtaak” hebben. Voer het wachtwoord in en klik op “OK” om de taak op te slaan.
7. Om Task Scheduler goed te laten functioneren, moet de Job Scheduler service worden ingesteld om te starten Voer “Services.msc” uit. In de lijst van services, zoek Taakplanner en dubbelklik erop. Stel op het tabblad Algemeen het opstarttype in op “Automatisch” en klik op OK om uw wijziging op te slaan.

Wanneer er nu nieuwe software op uw Microsoft Windows Server wordt geïnstalleerd, wordt u via een e-mail op de hoogte gebracht met details over het tijdstip van de installatie, de naam van de software en de gebruikers-ID (SID) van de persoon die de software heeft geïnstalleerd.

Geplande taken wijzigen of verwijderen

Om een bestaande taak te wijzigen, klikt u er met de rechtermuisknop op in de lijst, selecteert u Eigenschappen, wijzigt u de vereiste instellingen en klikt u op OK. Om een geplande taak te verwijderen, klikt u er met de rechtermuisknop op, selecteert u Verwijderen en bevestigt u de actie.

Geplande taken maken met PowerShell-scripts

Nu u weet hoe u een taak kunt maken met Taakplanner, laten we eens uitzoeken hoe u een geplande taak kunt maken met PowerShell. Stel dat we willen dat onze taak dagelijks om 10 uur wordt gestart, en het moet het PowerShell-script uitvoeren dat u hier kunt vinden, dat wijzigingen in het groepslidmaatschap in de Active Directory-site zal controleren.

In Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2) moet u, om een geplande taak te maken, de module TaskScheduler gebruiken. Installeer de module door de opdracht “Import-Module TaskScheduler” uit te voeren en gebruik het volgende script om een taak te maken die het PowerShell-script met de naam GroupMembershipChanges.ps1 dagelijks om 10 uur zal uitvoeren:

Import-Module TaskScheduler $task = New-Task$task.Settings.Hidden = $trueAdd-TaskAction -Task $task -Path C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe –Arguments "-File C:\Scripts\GroupMembershipChanges.ps1"Add-TaskTrigger -Task $task -Daily -At "10:00"Register-ScheduledJob –Name "Monitor Group Management" -Task $task

Windows PowerShell 4.0 (Windows Server 2012 R2 en hoger) bevat de module TaskScheduler niet, dus dit script zal niet werken. In plaats daarvan introduceerde PowerShell 3.0 en 4.0 nieuwe cmdlets voor het maken van geplande taken, New-ScheduledTaskTrigger en Register-ScheduledTask, die het maken van een geplande taak veel eenvoudiger en handiger maken. Laten we dus een taak maken die ons script dagelijks om 10 uur zal uitvoeren met de systeem account (SYSTEM). Deze taak wordt uitgevoerd door een account met verhoogde rechten.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings$User= "NT AUTHORITY\SYSTEM" # Specify the account to run the script$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript.ps1" # Specify what program to run and with its parametersRegister-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

Andere trigger-opties die nuttig kunnen zijn bij het maken van nieuwe taken zijn:

  • -AtStartup – Hiermee activeert u uw taak bij het opstarten van Windows.
  • -AtLogon – Hiermee activeert u uw taak wanneer de gebruiker zich aanmeldt.
  • -Once – Hiermee activeert u uw taak één keer. U kunt een herhalingsinterval instellen met de parameter -RepetitionInterval.
  • -Weekly – Triggers uw taak een keer per week.

Merk op dat, met behulp van deze cmdlets, is het niet mogelijk om uitvoering te triggeren “op een gebeurtenis”, zoals we deden met de Task Scheduler tool. PowerShell scripts met “on an event” triggers zijn veel gecompliceerder, dus dit is een echt nadeel van het gebruik van PowerShell in plaats van Task Scheduler.

Conclusie

Zoals u ziet, is het eenvoudig om geplande taken te maken met Task Scheduler of PowerShell. Maar vergeet niet dat onjuiste wijzigingen in uw geplande taken serviceonderbrekingen kunnen veroorzaken en de serverprestaties kunnen verslechteren. Daarom is het essentieel om alle wijzigingen in uw geplande taken bij te houden.

Jeff is een Director of Global Solutions Engineering bij Netwrix. Hij is al lange tijd Netwrix blogger, spreker en presentator. Op de Netwrix-blog deelt Jeff lifehacks, tips en trucs die uw systeembeheerervaring drastisch kunnen verbeteren.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.