Sådan automatiseres PowerShell-scripts med Opgavestyring

Microsoft Windows Opgavestyring kan hjælpe dig med automatisk at starte et program eller PowerShell-script på et bestemt tidspunkt, eller når visse betingelser er opfyldt. Du kan også planlægge afsendelse af e-mails og endda visning af visse meddelelser. I denne blog vil vi vise dig, hvordan du kan køre et PowerShell-script fra Task Scheduler, der advarer om enhver softwareinstallation på en lokal computer.

Vi vil også oprette planlagte opgaver ved hjælp af PowerShell-scripts. Du lærer at:

  • Opret opgaver med Task Scheduler
  • Modificer eller slet planlagte opgaver
  • Opret planlagte opgaver med PowerShell-scripts.

Opret opgaver med Task Scheduler

Åbn Task Scheduler ved at trykke på “Windows+R” og derefter skrive “taskschd.msc” i det vindue, der åbnes. Følg derefter følgende trin:

1. Klik på “Opret en opgave”, og indtast et navn og en beskrivelse for den nye opgave. Hvis du vil køre programmet med administratorrettigheder, skal du markere feltet “Run with the highest privileges” (Kør med de højeste rettigheder). I vores eksempel tildeler vi en servicekonto til at køre opgaven og kører den, uanset om brugeren er logget på.

2. Skift til fanen Udløsere, og klik på knappen “Ny…”. Her kan du angive de betingelser, der udløser, at opgaven skal udføres. Du kan f.eks. få den udført efter en tidsplan, ved logon, ved inaktivitet, ved opstart eller når en bestemt hændelse indtræffer. Vi ønsker, at vores opgave skal udløses ved enhver ny softwareinstallation, så vi vælger “Ved en hændelse” fra rullemenuen og vælger “Program” fra indstillingerne for logbog. Lad parameteren “Source” være tom, og indstil EventID til “11707”. Klik på “OK” for at gemme ændringerne.

3. Naviger til fanen “Actions” (handlinger), og klik på “New…” (ny). Her kan du angive de handlinger, der skal udføres, når udløserbetingelserne er opfyldt. Du kan f.eks. sende en e-mail eller vise en meddelelse. I vores tilfælde ønsker vi at starte et program, så vi skal oprette det PowerShell-script, vi ønsker at køre, og gemme det med udvidelsen “ps1”. Du kan finde scriptet her; det vil sende en advarsel med hændelsesoplysningerne om den installerede software.

For at planlægge PowerShell-scriptet skal du angive følgende parametre:

  • Handling: Start et program
  • Program\script: powershell
  • Tilføj argumenter (valgfrit): -File

Klik på “OK” for at gemme dine ændringer.

4. Fanen “Betingelser” giver dig mulighed for at angive de betingelser, der sammen med udløseren afgør, om opgaven skal køres. I vores tilfælde skal vi lade standardindstillingerne stå på denne fane.

5. Du kan også opsætte yderligere parametre for din planlagte opgave på fanen “Indstillinger”. I vores eksempel lader vi dem dog være uændrede.

6. Når opgaven er helt opsat, vil systemet bede dig om adgangskoden til servicekontoen. Bemærk, at denne konto skal have retten “Log on as Batch Job” (Log på som batchjob). Indtast adgangskoden, og klik på “OK” for at gemme opgaven.
7. For at Opgaveskemalægger kan fungere korrekt, skal tjenesten Opgaveskemalægger være indstillet til at starte Kør “Services.msc”. Find Task Scheduler på listen over tjenester, og dobbeltklik på den. Indstil starttypen til “Automatisk” på fanen Generelt, og klik på OK for at gemme ændringen.

Nu, når der installeres ny software på din Microsoft Windows Server, får du besked via en e-mail med oplysninger om tidspunktet for installationen, navnet på softwaren og bruger-id’et (SID) på den person, der har installeret den.

Modificering eller sletning af planlagte opgaver

For at ændre en eksisterende opgave skal du højreklikke på den på listen, vælge Egenskaber, redigere de ønskede indstillinger og klikke på OK. Hvis du vil slette en planlagt opgave, skal du højreklikke på den, vælge Slet og bekræfte handlingen.

Skabelse af planlagte opgaver med PowerShell-scripts

Nu ved du, hvordan du opretter en opgave ved hjælp af Opgavestyring, så lad os finde ud af, hvordan du opretter en planlagt opgave ved hjælp af PowerShell. Lad os antage, at vi ønsker, at vores opgave skal startes dagligt kl. 10 om morgenen, og at den skal udføre det PowerShell-script, du kan finde her, som overvåger ændringer i gruppemedlemsskabet på Active Directory-stedet.

I Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2) skal du bruge modulet TaskScheduler for at oprette en planlagt opgave. Installer modulet ved at køre kommandoen “Import-Module TaskScheduler”, og brug følgende script til at oprette en opgave, der udfører PowerShell-scriptet GroupMembershipChanges.ps1 dagligt kl. 10:00:

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 og højere) indeholder ikke modulet Task Scheduler, så dette script virker ikke. I stedet har PowerShell 3.0 og 4.0 indført nye cmdlets til oprettelse af planlagte opgaver, New-ScheduledTaskTrigger og Register-ScheduledTask, som gør det meget nemmere og mere bekvemt at oprette en planlagt opgave. Så lad os oprette en opgave, der vil udføre vores script dagligt kl. 10 om morgenen ved hjælp af systemkontoen (SYSTEM). Denne opgave vil blive udført af en konto med forhøjede rettigheder.

$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

Andre udløserindstillinger, der kan være nyttige ved oprettelse af nye opgaver, omfatter:

  • -AtStartup – Udløser din opgave ved opstart af Windows.
  • -AtLogon – Udløser din opgave, når brugeren logger ind.
  • -Once – Udløser din opgave én gang. Du kan angive et gentagelsesinterval ved hjælp af parameteren -RepetitionInterval.
  • -Weekly – Udløser din opgave én gang om ugen.

Bemærk, at det ved hjælp af disse cmdlets ikke er muligt at udløse udførelse “ved en hændelse”, som vi gjorde med værktøjet Opgaveskemalægger. PowerShell-scripts med udløsere “ved en hændelse” er meget mere komplicerede, så det er en reel ulempe ved at bruge PowerShell frem for Task Scheduler.

Slutning

Som du kan se, er det nemt at oprette planlagte opgaver ved hjælp af Task Scheduler eller PowerShell. Men husk, at ukorrekte ændringer af dine planlagte opgaver kan medføre serviceafbrydelser og forringe serverens ydeevne. Derfor er det vigtigt at spore alle ændringer af dine planlagte opgaver.

Jeff er Director of Global Solutions Engineering hos Netwrix. Han er en mangeårig Netwrix-blogger, taler og oplægsholder. På Netwrix-bloggen deler Jeff lifehacks, tips og tricks, der kan forbedre din systemadministrationsoplevelse markant.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.