- med PowerShell Du kan automatisere periodiske, betingede og hendelsesoppgaver i Windows.
- Det finnes klassiske (GUI, schtasks) og moderne (cmdlets og planlagte jobber) metoder for å konfigurere oppgaver.
- Det er avgjørende å bruke riktige parametere når du kjører skript for å unngå feil og krasj.

kontroll tiden og hyppigheten av utførelse av skriptene dine er en superkraft når du jobber med Windows og PowerShell. Automatisering av rutinemessige eller kritiske oppgaver sparer ikke bare tid, men lar deg også redusere feil og frigjøre ressurser til å fokusere på viktigere saker. Enten du er systemadministrator, utvikler eller bare nysgjerrig på å mestre programmering av oppgaver i PowerShell vil være en av dine beste ressurser.
I denne artikkelen dykker vi først ned i å oppdage alle måtene å planlegge kjøringen av skript og kommandoer med PowerShellVi vil gjennomgå alt fra den klassiske bruken av Windows Oppgaveplanlegger til den moderne tilnærmingen med spesifikke cmdleter, som dekker Triks, anbefalinger og detaljer som kan utgjøre forskjellen mellom suksess og kaos i automatiseringen din.
Hvorfor automatisere og planlegge oppgaver med PowerShell?
Levetiden til skript bør ikke avhenge av at du er ved tastaturet til akkurat riktig tid. Automatisering av gjentakende eller på forespørsel utførte oppgaver eliminerer monotoni, reduserer muligheten for oversikt og sikrer at kritiske operasjoner utføres uansett hva.
Den vanligste årsaken til å planlegge oppgaver er å kjøre vedlikeholds-, sikkerhetskopierings-, overvåkings- eller rapporteringsskript på bestemte tidspunkter: med jevne mellomrom, som svar på hendelser eller under bestemte forhold.
Windows tilbyr flere verktøy og metoder for denne typen automatisering, og selv om Oppgaveplanlegger er en veteran, har PowerShell gjenoppfunnet den med moderne cmdleter som lar deg opprette, administrere og kontrollere oppgaver fra konsollen eller fra skript.
Forstå Windows Oppgaveplanlegger og PowerShell
Windows Oppgaveplanlegger har vært det foretrukne verktøyet for å automatisere kjøringen av programmer, kommandoer og skript i flere tiår. Men når det gjelder PowerShell-skript, Tvil, feil under utførelse eller uventet oppførsel dukker alltid opp hvis alternativene ikke er riktig konfigurert..
Det er her PowerShell tilbyr deg to veier:
- Bruk Oppgaveplanlegger gjennom det grafiske grensesnittet, legg til PowerShell som program og script som et argument.
- Bruk PowerShell-cmdleter til å opprette og administrere planlagte oppgaver fra kommandolinjen eller skript. Dette er kraftigere, mer fleksibelt og mer repeterbart.
En viktig merknad: siden PowerShell 3.0 er modulen inkludert PSPlanlagt jobb som legger til en rekke cmdleter for arbeid med planlagte oppgaver. Dette lar deg opprette oppgaver som kjører med jevne mellomrom, i bakgrunnen, og automatisk lagrer utførelsesresultatene.
Hvordan fungerer oppgaveplanlegging med PowerShell?
Den grunnleggende prosessen for programmering av et skript i PowerShell er som følger:
- Lagre skriptet du vil automatisere på et sted som er tilgjengelig for brukeren som skal kjøre det.
- Definer utløseren eller frekvensen: daglig, ukentlig, hendelsesbasert eller på forespørsel.
- Konfigurer handlingen som skal utføres: kjør vanligvis PowerShell med skriptet ditt som et argument.
- Registrer den planlagte oppgaven slik at Windows kjører den automatisk.
Nå er det detaljene som utgjør forskjellen. Det er ikke nok å bare legge inn skriptstien i programmereren og forvente at det skal fungere. Det finnes kritiske alternativer som tillatelser, argumenter, utførelsespolicyer eller utvidede rettigheter som bør forstås godt, fordelene og hvordan man unngår vanlige feil..
Metoder for å planlegge oppgaver med PowerShell
Det finnes flere måter å automatisere oppgaver i PowerShell. De vanligste er:
- Manuell oppretting fra Oppgaveplanleggerens grafiske brukergrensesnitt
- Bruke kommandoer schtasks.exe fra konsollen
- Bruk av innebygde PowerShell-cmdleter som Ny planlagt oppgave, Registrer-Scheduled Task eller modulen PSPlanlagt jobb
Manuell oppretting med oppgaveplanleggeren (GUI)
Den tradisjonelle metoden består av:
- åpner Kontrollpanel > Administrative verktøy > Oppgaveplanlegger.
- Velg alternativet Lag oppgave i stedet for «Opprett grunnleggende oppgave» for å ha alle de avanserte alternativene.
- Tab Informasjon, tildel et navn og velg Kjør uansett om brukeren er logget inn eller ikke y Kjør med høyeste rettigheter hvis skriptet ditt trenger det.
- Tab Utløsere, definer frekvensen: daglig, ukentlig, ved innlogging, ved systemoppstart osv.
- En Handlinger, velg «Start et program». Her er hovedpoenget: i Program eller manus du må skrive powershell.exe og inn Legg til argumenter, parameteren som vil kjøre skriptet ditt.
Riktig konfigurasjon av PowerShell-skriptkjøring
Det er vanligvis her det første bristepunktet kommer inn. Det er ikke nok å legge inn banen til .ps1-filen som om det var en .bat, siden PowerShell må eksplisitt gis beskjed om hva den skal gjøre.
Den mest pålitelige måten å sikre at .ps1-skriptet ditt kjører som du ønsker, er å oppgi følgende argumenter i feltet «Legg til argumenter»:
-NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& 'ruta-completa-al-script.ps1'"
Hvorfor disse parameterne?
- -Ingen profilUnngår lasting av brukerprofilen, noe som gjør den mer forutsigbar og unngår mulige krasj.
- -Ikke-interaktiv: sørger for at skriptet ikke vil forsøke å vise dialoger som krever inngripen.
- -ExecutionPolicy BypassOmgå utførelsesbegrensninger (så lenge du er sikker på at skriptet er trygt).
- -Kommando: utfører kommandoblokken, og & fungerer som en anropsoperator i PowerShell.
Merk: Kallet til skriptet må innledes av & og omsluttet av enkle anførselstegn innenfor de globale doble anførselstegnene.
Praktisk eksempel på en planlagt oppgave i PowerShell
Anta at du har skriptet C:\Data\DiskMonitorServer.ps1 og du vil at den skal kjøre ukentlig på mandager klokken 15:45.
- Program eller skript:
powershell.exe - Legg til argumenter:
-NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& 'C:\Data\MonitorDiscosServidor.ps1'"
Dette sikrer at PowerShell starter filen uten forstyrrelser og ikke lar oppgaven henge midt i kjøringen – en veldig vanlig feil når disse parameterne utelates.
Avansert automatisering med PowerShell-cmdleter
Siden PowerShell 3.0 har vi en modul og en serie spesifikke cmdleter for å opprette, administrere og spørre planlagte oppgaver på en mye mer fleksibel måte og fra skript. Dette er spesielt nyttig når du vil implementere komplekse automatiseringer, replikere oppgaver mellom servere, lagre konfigurasjoner som kode eller generere batchoppgaver.
De viktigste cmdlets som er involvert:
- New-Scheduled TaskAction: Definerer hva som skal kjøres (f.eks. powershell.exe og skriptet).
- New-ScheduledTaskTrigger: oppretter utløseren (daglig, ukentlig, ved oppstart osv.).
- Registrer-Scheduled TaskRegistrerer oppgaven i systemet.
- Get-ScheduledTask: : Spør eksisterende oppgaver.
Enkelt eksempel på én linje:
Register-ScheduledTask -Action (New-ScheduledTaskAction -Execute 'notepad.exe') -Trigger (New-ScheduledTaskTrigger -Daily -At 16:25pm) -TaskName 'Update'
Denne kommandoen oppretter en oppgave som åpner Notisblokk hver dag klokken 16:25. Bare erstatt notepad.exe med «PowerShell.exe» og legg til de riktige argumentene.
Opprette planlagte jobber i PowerShell
En annen interessant funksjon er at planlagte jobber, som fungerer som en hybrid mellom Scheduler-oppgaver og PowerShell-bakgrunnsjobber.
Den store fordelen er at du kan Definer, spør og kontroller fra PowerShell når, hvordan og hva som kjører, inkludert resultatregistrering og avansert administrasjon.
Eksempel: Opprett en daglig planlagt jobb klokken 3:00 som kjører Get-Process selv om systemet går på batteri:
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} -Trigger $trigger -ScheduledJobOption $options
Sjekk eksisterende planlagte jobber:
Get-ScheduledJob
Vis utløsere for en bestemt jobb:
Get-JobTrigger -Name ProcessJob
Samle inn resultatene av den siste jobbutførelsen:
Receive-Job -Id 51
Og hvis du vil slette den planlagte jobben og de lagrede resultatene:
Unregister-ScheduledJob ProcessJob
Dette muliggjør sentralisert og avansert administrasjon, ideelt for forretnings- eller laboratoriescenarioer der du ønsker å opprettholde utførelses- og resultatregistre.
Planlegg oppgaver for bestemte hendelser i Windows
Oppgaveplanleggeren er ikke bare nyttig for tidsbasert planlegging. Du kan også starte PowerShell-skript som svar på systemhendelser. (for eksempel når det oppstår en autentiseringsfeil eller en annen hendelse i hendelsesloggen).
Det er enkelt å sette opp dette:
- Fra hendelsesvisningen finner du hendelsen som skal fungere som utløser.
- Velg alternativet «Legg ved oppgave til denne hendelsen» eller lignende.
- Følg veiviseren og angi hvordan du skal utføre handlingen. powershell.exe og, i argumenter, -Fil 'full-path-of-script.ps1'.
- Husk å endre innstillingene slik at oppgaven kjører med nødvendige tillatelser og uansett om brukeren er logget inn eller ikke.
Denne typen automatisering er perfekt for proaktive varsler – for eksempel en PowerShell som sender en e-post så snart den oppdager et sikkerhetsmønster i logger.
Komplett eksempel: Opprette, registrere og verifisere en oppgave i PowerShell
Nedenfor er et komplett scenario for å opprette og verifisere en planlagt oppgave:
- Forbered manuset: Lagre PowerShell-en din i C:\scripts\MonitorLog.ps1For eksempel et skript som overvåker endringer i en logg.
- Konfigurer utførelsespolicyen (kun første gang):
Sett ExecutionPolicy RemoteSigned
- Opprett oppgaven med cmdlets:
$action = New-ScheduledTaskAction -Execute 'PowerShell.exe' -Argument '-NoProfile -NonInteractive -ExecutionPolicy Bypass -Command "& ''C:\scripts\MonitorLog.ps1''"' $trigger = New-ScheduledTaskTrigger -Weekly -WeeksInterval 1 -DaysOfWeek Monday -At 2:40pm Register-ScheduledTask -TaskName 'MonitorLog' -Trigger $trigger -Bruker 'Administrator' -Handling $accion -RunLevel Highest –Force
- Bekreft at oppgaven vises riktig:
Get-ScheduledTask -Oppgavenavn 'MonitorLog'
- Sjekk resultatene etter utførelse: Sjekk programmererloggene eller bruk dem Få planlagt jobb Hvis du brukte planlagte jobber, for å bekrefte utførelse og resultater.
Automatisering med PowerShell og skyplattformer
Ikke bare kan du planlegge oppgaver lokalt i Windows, men også med PowerShell og integrasjonen med plattformer som Microsoft 365, Azure eller Dynamics, Du har muligheten til å lage massive automatiseringer i skyenDu kan utvide kunnskapen din om planlegging av oppgaver i PowerShell med vår dedikerte ressurs. Slik bruker du Microsoft Flow til å automatisere.
Noen nyttige cmdleter inkluderer:
- Get-AdminPowerAppEnvironment: for å liste opp miljøer og arbeide med Power Apps.
- Azure-cmdleter: å kjøre skript mot skyressurser med jevne mellomrom.
- Lisensautomatisering og brukeradministrasjon i Microsoft 365.
Lidenskapelig forfatter om verden av bytes og teknologi generelt. Jeg elsker å dele kunnskapen min gjennom å skrive, og det er det jeg skal gjøre i denne bloggen, vise deg alle de mest interessante tingene om dingser, programvare, maskinvare, teknologiske trender og mer. Målet mitt er å hjelpe deg med å navigere i den digitale verden på en enkel og underholdende måte.