Bijna elke systeembeheerder heeft wel eens te maken met geplande taken. Ze zijn ongelooflijk nuttig om iets te doen op basis van verschillende triggers, maar het vergt veel handmatige inspanning om ze goed te configureren.
Het voordeel van geplande taken is dat je er een kunt maken met een hoog niveau van verfijning met triggeropties en verschillende beveiligingscontexten. Maar waar complexiteit heerst, kunnen configuratiefouten ontstaan. Wanneer u deze automatiseringsscripts ontwikkelt, kunt u een geplande taak maken met PowerShell om het proces te vergemakkelijken. Het gebruik van PowerShell helpt bij het standaardiseren van het beheer en het instellen van ingewikkelde geplande taken, wat als bijkomend voordeel heeft dat de gebruikelijke fouten bij handmatige invoer worden vermeden.
Bouw een geplande taakactie
Op zijn minst heeft een geplande taak een actie, een trigger en een groep bijbehorende instellingen. Zodra u de taak hebt gemaakt, moet u deze ook op het systeem registreren. U moet elke actie afzonderlijk uitvoeren om een enkele geplande taak te maken.
Om de actie te maken, gebruikt u het cmdlet New-ScheduledTaskAction dat de opdracht specificeert die moet worden uitgevoerd. Laten we een actie maken die een beetje meta wordt en een PowerShell script aanroept.
Het commando hieronder geeft een voorbeeld van het aanroepen van de PowerShell engine en het doorgeven van een script aan het met behulp van alle juiste command line switches om het script non-interactief te laten lopen. Het script-bestand bevindt zich op de machine waarop de geplande taak zal worden uitgevoerd.
$Action = New-ScheduledTaskAction -Execute 'pwsh.exe' -Argument '-NonInteractive -NoLogo -NoProfile -File "C:\MyScript.ps1"'
Maak een trigger
Volgende, u hebt een trigger nodig. U hebt een aantal waarden beschikbaar, maar deze taak zal een specifieke tijd gebruiken — 3 uur ‘s morgens — om dit script eenmalig uit te voeren. Voor een volledige lijst met opties, zie de New-ScheduledTaskTrigger cmdlet help page.
$Trigger = New-ScheduledTaskTrigger -Once -At 3am
Create settings
Next, maak de geplande taak met behulp van de New-ScheduledTask commando. Deze opdracht vereist een waarde voor de parameter Instellingen, zelfs als u geen speciale gebruikt. Daarom voert u New-ScheduledTaskSettingsSet uit om een object te maken dat u hier kunt doorgeven.
$Settings = New-ScheduledTaskSettingsSet
Maak de geplande taak
Nadat u alle objecten als variabelen hebt toegewezen, geeft u elk van deze variabelen door aan de opdracht New-ScheduledTask om een object voor de geplande taak te maken.
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings
Registreer de geplande taak
Op dit punt hebt u een object voor de geplande taak in het geheugen gemaakt. Om de geplande taak op de computer toe te voegen, moet u de geplande taak registreren met het cmdlet Register-ScheduledTask.
Het onderstaande voorbeeld registreert een geplande taak om deze onder een bepaalde gebruikersnaam uit te voeren. Om de taak onder de context van een bepaalde gebruiker uit te voeren, moet u het wachtwoord opgeven. Het is handig om de documentatie voor het Register-ScheduledTask commando te bekijken om alle opties te zien die je met dit cmdlet kunt gebruiken.
Register-ScheduledTask -TaskName 'My PowerShell Script' -InputObject $Task -User 'username' -Password 'passhere'
Als je alle stappen correct hebt uitgevoerd, zou je je nieuw aangemaakte scheduled task in de Task Scheduler moeten zien.
Nadat de geplande taak is geregistreerd en wordt weergegeven in Task Scheduler, kunt u nu het cmdlet Get-ScheduledTask uitvoeren om de taak te zien.