Automatisera PowerShell-scripts med Task Scheduler

Microsoft Windows Task Scheduler kan hjälpa dig att automatiskt starta ett program eller PowerShell-script vid en viss tidpunkt eller när vissa villkor är uppfyllda. Du kan också schemalägga sändning av e-postmeddelanden och till och med visa vissa meddelanden. I den här bloggen visar vi hur du kör ett PowerShell-skript från Aktivitetsschemaläggaren som varnar för alla programinstallationer på en lokal dator.

Vi kommer också att skapa schemalagda uppgifter med hjälp av PowerShell-skript. Du kommer att lära dig att:

  • Skapa uppgifter med Task Scheduler
  • Modifiera eller ta bort schemalagda uppgifter
  • Skapa schemalagda uppgifter med PowerShell-skript.

Skapa uppgifter med Task Scheduler

Öppna Task Scheduler genom att trycka på ”Windows+R” och sedan skriva ”taskschd.msc” i det fönster som öppnas. Följ sedan följande steg:

1. Klicka på ”Create a task” (Skapa en uppgift) och ange ett namn och en beskrivning för den nya uppgiften. Om du vill köra programmet med administratörsprivilegier kryssar du i rutan ”Kör med de högsta privilegierna”. I vårt exempel tilldelar vi ett servicekonto att köra uppgiften och kör den oavsett om användaren är inloggad eller inte.

2. Byt till fliken Utlösare och klicka på knappen ”Ny…”. Här kan du ange de villkor som utlöser att uppgiften ska utföras. Du kan till exempel låta den exekveras enligt schema, vid inloggning, vid inaktivitet, vid start eller när en viss händelse inträffar. Vi vill att vår uppgift ska utlösas vid varje ny programinstallation, så vi väljer ”Vid en händelse” från rullgardinsmenyn och väljer ”Program” från inställningarna för logg. Låt parametern ”Source” vara tom och ange EventID till ”11707”. Klicka på ”OK” för att spara ändringarna.

3. Navigera till fliken ”Åtgärder” och klicka på ”Ny…”. Här kan du ange de åtgärder som ska utföras när utlösningsvillkoren är uppfyllda. Du kan till exempel skicka ett e-postmeddelande eller visa ett meddelande. I vårt fall vill vi starta ett program, så vi måste skapa det PowerShell-skript som vi vill köra och spara det med tillägget ”ps1”. Du hittar skriptet här; det kommer att skicka en varning med händelsedetaljer om den installerade programvaran.

För att schemalägga PowerShell-skriptet anger du följande parametrar:

  • Åtgärd: Starta ett program
  • Program\script: powershell
  • Lägg till argument (valfritt): -File

Klicka på ”OK” för att spara ändringarna.

4. Under fliken ”Conditions” (Villkor) kan du ange de villkor som tillsammans med utlösaren avgör om aktiviteten ska köras. I vårt fall bör vi lämna standardinställningarna på den här fliken.

5. Du kan också ställa in ytterligare parametrar för din schemalagda uppgift på fliken ”Inställningar”. I vårt exempel lämnar vi dem dock oförändrade.

6. När uppgiften är helt inställd kommer systemet att be dig om lösenordet till servicekontot. Observera att det här kontot måste ha rättigheten ”Logga in som batchjobb”. Ange lösenordet och klicka på ”OK” för att spara uppgiften.
7. För att Task Scheduler ska fungera korrekt måste tjänsten Job Scheduler ställas in för att starta Kör ”Services.msc”. I listan över tjänster hittar du Task Scheduler och dubbelklickar på den. På fliken Allmänt ställer du in starttypen till ”Automatisk” och klickar på OK för att spara ändringen.

När en ny programvara installeras på din Microsoft Windows Server kommer du nu att meddelas via ett e-postmeddelande som innehåller uppgifter om tiden för installationen, namnet på programvaran och användar-ID (SID) för den person som installerade den.

Modifiera eller ta bort schemalagda uppgifter

För att ändra en befintlig uppgift högerklickar du på den i listan, väljer Egenskaper, redigerar de inställningar som krävs och klickar på OK. Om du vill ta bort en schemalagd aktivitet högerklickar du på den, väljer Ta bort och bekräftar åtgärden.

Skapa schemalagda aktiviteter med PowerShell-skript

Nu när du vet hur du skapar en aktivitet med Aktivitetsschemaläggaren ska vi ta reda på hur du skapar en schemalagd aktivitet med PowerShell. Anta att vi vill att vår uppgift ska startas dagligen klockan 10 på morgonen och att den ska exekvera det PowerShell-skript som du hittar här och som övervakar ändringar av gruppmedlemskap på Active Directory-webbplatsen.

I Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2) måste du använda modulen TaskScheduler för att skapa ett schemalagt jobb. Installera modulen genom att köra kommandot ”Import-Module TaskScheduler” och använd följande skript för att skapa en aktivitet som utför PowerShell-scriptet GroupMembershipChanges.ps1 dagligen klockan 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 och senare) innehåller inte modulen Task Scheduler, så det här skriptet fungerar inte. Istället har PowerShell 3.0 och 4.0 infört nya cmdlets för att skapa schemalagda uppgifter, New-ScheduledTaskTrigger och Register-ScheduledTask, som gör det mycket enklare och bekvämare att skapa en schemalagd uppgift. Så låt oss skapa en aktivitet som kommer att utföra vårt skript dagligen klockan 10 på morgonen med hjälp av systemkontot (SYSTEM). Den här uppgiften kommer att utföras av ett konto med förhöjda privilegier.

$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

Andra utlösningsalternativ som kan vara användbara vid skapandet av nya uppgifter är bland annat:

  • -AtStartup – Utlöser uppgiften vid start av Windows.
  • -AtLogon – Utlöser uppgiften när användaren loggar in.
  • -Once – Utlöser uppgiften en gång. Du kan ange ett upprepningsintervall med hjälp av parametern -RepetitionInterval.
  • -Weekly – Utlöser din aktivitet en gång i veckan.

När du använder dessa cmdlets är det inte möjligt att utlösa utförandet ”vid en händelse” som vi gjorde med verktyget Task Scheduler. PowerShell-skript med utlösare ”vid en händelse” är mycket mer komplicerade, så detta är en verklig nackdel med att använda PowerShell i stället för Task Scheduler.

Slutsats

Som du ser är det enkelt att skapa schemalagda uppgifter med hjälp av Task Scheduler eller PowerShell. Men kom ihåg att felaktiga ändringar av dina schemalagda uppgifter kan orsaka tjänsteavbrott och försämra serverns prestanda. Därför är det viktigt att spåra alla ändringar av dina schemalagda uppgifter.

Jeff är Director of Global Solutions Engineering på Netwrix. Han är en mångårig Netwrix-bloggare, talare och presentatör. I Netwrix-bloggen delar Jeff med sig av lifehacks, tips och tricks som dramatiskt kan förbättra din systemadministrationsupplevelse.

Lämna ett svar

Din e-postadress kommer inte publiceras.