Adam Automator

trenger du å lage mange planlagte oppgaver eller automatisere planlagte oppgaver? I så fall har du flaks. I denne artikkelen skal du lære hvordan du administrerer planlagte oppgaver Ved Hjelp Av PowerShell.

Planlagte oppgaver som utfører enkle handlinger er raske å lage og komfortable nok til å gjenta ved Hjelp Av Task Scheduler app interface (GUI). Men systemadministratorer eller utviklere må kanskje distribuere mer kompliserte oppgaver med flere tidsplaner, utløsere eller argumenter.Heldigvis kan Du Bruke PowerShell til å opprette og administrere planlagte oppgaver. Administrere planlagte oppgaver Med PowerShell er gjort mulig med bruk Av ScheduledTasks modul som er innebygd I Windows.

Innholdsfortegnelse

Forutsetninger

Siden dette er en lærings-by-doing type artikkel, er det noen forutsetninger slik at du kan følge med. Nedenfor er kravene for å opprette planlagte PowerShell-oppgaver Ved Hjelp Av PowerShell.

  • eksemplene i denne artikkelen bruker Windows 10. Men Windows Server 2012 og nyere kan gjøre det samme.
  • Windows PowerShell 5.1 Eller PowerShell 7.
  • Det ville hjelpe hvis du hadde en skriptredigerer som Visual Studio Code, Notepad++ eller Windows PowerShell ise.

Opprette En Ny Planlagt Oppgave

en planlagt oppgave krever minst to komponenter for å fungere; handling og utløser. Det er valgfritt å legge til en sikkerhetskontekst og et sett med relaterte innstillinger. Hvis du vil ha bedre forståelse, kan du se den korte forklaringen for hver planlagte aktivitetskomponent nedenfor:

  • Handling – handlingen som utføres av den planlagte aktiviteten. En handling er vanligvis å kjøre et program eller et skript. En planlagt oppgave kan ha flere handlinger.
  • Trigger-kontroller når den planlagte oppgaven kjøres. Utløsere kan være tidsbaserte, som å sette en tidsplan for daglig eller time gjentakelse. Utløsere kan også være aktivitetsbaserte, som kjører en oppgave basert på oppdagede aktiviteter som oppstart av datamaskinen, en bruker logger på eller loggede hendelser.
  • Principal-kontrollerer sikkerhetskonteksten som brukes til å kjøre den planlagte oppgaven. En rektor inkluderer blant annet brukerkontoen og den nødvendige rettigheten som brukes av den planlagte oppgaven.
  • Innstillinger – Er et sett med alternativer og betingelser som styrer hvordan den planlagte oppgaven fungerer. Som et eksempel kan du tilpasse en oppgave til å bli fjernet etter et sammenhengende antall dager som oppgaven er ubrukt.

under en planlagt oppgaveopprettelse kreves ikke rektor og innstillinger eksplisitt. Standardverdiene blir brukt i stedet.

Opprette En Oppgavehandling

når du vil at en planlagt oppgave skal gjøre noe, oppretter du ny oppgavehandling. I dette eksemplet vil du opprette en oppgave som vil kalle PowerShell.exe og kjøre et skript. Sørg for å ha skripteditoren klar.

merk at skriptet nedenfor bare er et tilfeldig eksempel, og du trenger ikke å bruke det. Du kan bruke et hvilket som helst skript du vil ha. Bruk av skriptet nedenfor oppretter imidlertid et lett verifiserbart resultat som kan bekrefte om den planlagte oppgaven fungerte.

eksempelskriptet nedenfor, når det utføres, får de ti siste hendelsene fra programhendelsesloggen. Eksporter deretter hendelsene til en NY XML-fil i c:\temp mappe. Kopier koden nedenfor, lim den inn i skripteditoren din og lagre med filnavnet Get-LatestAppLog. ps1 i en hvilken som helst mappe du vil ha.

koden nedenfor brukerNew-ScheduledTaskAction til å opprette et nytt handlingsobjekt for planlagt oppgave lagret i$taskAction variabelen. Denne handlingen vil kalle powershell.exe kjørbar og passere argumentet for å kjøre C:\scripts\Get-LatestAppLog.ps1.

Kopier kommandoen ovenfor og kjør den I PowerShell. Det resulterende objektet i $taskAction variabelen skal se ut som skjermbildet nedenfor.

Opprette en Ny Planlagt Oppgave Handling

Legge Til En Utløser

nå som du har en oppgave handling opprettet, er neste trinn er å definere når oppgaven må kjøre. Cmdleten som skal brukes til å opprette en utløser, erNew-ScheduledTaskTrigger cmdleten. Kommandoen nedenfor skaper en utløser for å kjøre daglig på 3 PM. Kopier og kjør koden I PowerShell.

# Create a new trigger (Daily at 3 AM)$taskTrigger = New-ScheduledTaskTrigger -Daily -At 3PM$tasktrigger

det resulterende objektet i $tasktrigger variabelen skal se ut som bildet nedenfor.

Opprette En Utløser (Daglig ved 3 AM)

Registrere Oppgaven

så langt har du opprettet grunnkravene for å opprette en ny planlagt oppgave. Det neste trinnet er å opprette den planlagte oppgaven og registrere den i systemet.

koden nedenfor bruker cmdletenRegister-ScheduledTask for å registrere den planlagte oppgaven. Parameteren-Action er nødvendig for å passere aktivitetshandlingsobjektet som er lagret i variabelen $taskAction-Trigger parameteren er nødvendig for å passere$taskTrigger variabelt innhold.

# Register the new PowerShell scheduled task# The name of your scheduled task.$taskName = "ExportAppLog"# Describe the scheduled task.$description = "Export the 10 newest events in the application log"# Register the scheduled taskRegister-ScheduledTask ` -TaskName $taskName ` -Action $taskAction ` -Trigger $taskTrigger ` -Description $description

Kopier koden ovenfor og kjør Den I PowerShell. Som et resultat registreres den nye planlagte oppgaven, som vist nedenfor.

Registrerer den nye planlagte oppgaven

Kjører Oppgaven

etter at du har opprettet en planlagt oppgave, bør du bekrefte at den planlagte oppgaven er oppgaven finnes nå i systemet. Åpne Oppgaveplanleggeren og finn den planlagte oppgaven fra listen. Du bør se den registrerte oppgaven på listen.

den nye planlagte oppgaven som sett i Task Scheduler-appen

Du kan også bekrefte at den registrerte planlagte oppgaven eksisterer ved å kjøre powershell-kommandoen nedenfor.

Get-ScheduledTaskInfo -TaskName ExportAppLog

du skal da se en lignende utgang, som skjermbilde av resultatet nedenfor.

Henter informasjon om planlagt oppgave.

og til slutt skal din nye planlagte oppgave jobbe for å avgjøre om det du gjorde så langt, var vellykket. Hvis du vil teste den planlagte oppgaven, kan du enten vente på neste kjøreplan eller bruke kommandoen nedenfor for å utløse manuelt.

Start-ScheduledTask -TaskName ExportAppLog

etter å ha kjørt koden, bør du se et lignende resultat som det som er vist nedenfor. Som du kan se, kjorer koden en XML-fil, som indikerer at den planlagte oppgaven fungerte som forventet.

Kjører Den Planlagte Oppgaven

Oppdatere En Eksisterende Planlagt Oppgave

etter at du har opprettet en planlagt oppgave, kan det hende at noen aspekter av den må oppdateres på et tidspunkt. Kanskje du vil gjøre det kjøre en time tidligere eller endre plasseringen av skriptfilen. Det er noen av endringene i den planlagte oppgaven som kan være nødvendig.

i de neste avsnittene lærer du hvordan du gjør endringer i eksisterende registrerte planlagte oppgaver Ved Hjelp Av PowerShell.

Endre Brukerkonto, Sikkerhetsalternativer og Kompatibilitetsinnstillinger

i forrige del kjører den planlagte oppgaven under samme brukerkontekst som opprettet den. Hva om oppgaven må kjøres med en annen brukerkonto, for eksempel en tjenestekonto, for eksempel.

i dette eksemplet vil du endre sikkerhetsalternativene for den planlagte oppgaven til innstillingene nedenfor.

  • du må endre brukerkontoen for å kjøre den planlagte oppgaven.
  • Tillat oppgaven å kjøre om brukeren er logget inn eller ikke.
  • Kjør med de høyeste nivåene av privilegier.
  • Sett oppgavens kompatibilitet Til Windows 10.

den første linjen i koden nedenfor vil opprette et hovedobjekt med den nye brukerkontoen og sette oppgaven til å kjøre med de høyeste rettighetene. Pass på å endre verdien av parameteren -UserID etter behov. Den andre linjen konfigurerer oppgavens kompatibilitet Med Windows 10.

endelig oppdaterer den tredje linjen ExportAppLog**planlagt oppgave ved hjelp av verdiene lagret i the $taskPrincipalog $taskSettings variabler. Kopier koden nedenfor og kjør den I PowerShell.

# Set the task principal's user ID and run level.$taskPrincipal = New-ScheduledTaskPrincipal -UserId 'DEVPC\svcTask' -RunLevel Highest# Set the task compatibility value to Windows 10.$taskSettings = New-ScheduledTaskSettingsSet -Compatibility Win8# Update the task principal settingsSet-ScheduledTask -TaskName 'ExportAppLog' -Principal $taskPrincipal -Settings $taskSettings

du vil legge merke til at -Compatibility parameterverdien er Win8. Ikke bli forvirret. Det ser Ut Til At Microsoft ikke har oppdatert det» nyeste » versjonsvalget Siden Windows 8. Likevel vil spesifisering avWin8 – verdien resultere I windows 10-kompatibilitet.

kommandoen nedenfor brukerSet-ScheduledTask cmdleten for å oppdatere den eksisterendeExportAppLog **planlagt oppgave. Pass på å endre passordverdien i parameteren -Password for å bruke brukerkontoens riktige passord.

# Update the task user account and passwordSet-ScheduledTask -TaskName 'ExportAppLog' -User $taskPrincipal.UserID -Password 'PASSWORD'

etter å ha kjørt kommandoen ovenfor, blir den planlagte oppgaven oppdatert. Hvis du sjekker den planlagte oppgaven, kan du bekrefte at sikkerhetsalternativene er endret.

sikkerhetsalternativet, brukerkontoen og kompatibilitetsinnstillingene

Endre Utløseren

noen ganger må utløserplanen være endret. Kanskje på grunn av noen operasjonelle justeringer eller ressursoptimalisering. I alle fall kan Du også bruke PowerShell til å erstatte eller legge til utløsere i en planlagt oppgave.

foreløpig utløses den planlagte oppgaven ExportAppLog hver dag på 3 PM. Anta at du må endre utløserplanen til daglig klokka 4:30 OG 1:00. Du må først opprette to nye oppgaveutløserobjekter for de to tidsplanene.

$taskTrigger1 = New-ScheduledTaskTrigger -Daily -At 4:30PM$taskTrigger2 = New-ScheduledTaskTrigger -Daily -At 1:00AM

bruk kommandoen nedenfor for å oppdatere utløseren for den planlagte oppgaven. Du vil legge merke til at -Trigger – parameteren godtar de to oppgaveutløserobjektene ,nemlig $taskTrigger1 og $taskTrigger2.

I Tillegg, siden du oppdaterer en planlagt oppgave med et passord lagret for brukerkontoen, må du oppgi-User og-Password verdiene igjen.

Set-ScheduledTask -TaskName 'ExportAppLog' -Trigger $taskTrigger1,$taskTrigger2 -User 'DEVPC\svcTask' -Password 'PASSWORD'

nedenfor er det forventede resultatet etter å ha kjørt koden.

Oppdaterer den planlagte oppgaven med flere utløsere

Og som du kan se nedenfor, er det nå to utløsere I Den Planlagte oppgaven ExportAppLog.

Den Planlagte oppgaven med flere utløsere

Slette og Gjenopprette En Planlagt Oppgave

Planlagte Oppgaver kan bli foreldet over tid. På et tidspunkt må du kanskje utføre rengjøring for planlagte oppgaver. I denne delen lærer du hvordan du administrerer planlagt oppgavesletting I PowerShell.

Sikkerhetskopiere En Planlagt Oppgave

før du fortsetter å slette planlagte oppgaver, er det lurt å ta en sikkerhetskopi først. Sikkerhetskopiering av planlagte oppgaver gir deg et gjenopprettingspunkt for når ting går galt.

det er ingen innebygd cmdlet å lage en planlagt oppgave backup. Men alt I PowerShell er et objekt, og eksport av objekter til fil er mulig. Når du trenger å sikkerhetskopiere et objekt til en fil, bruk cmdletenImport-Clixml.

eksempelkoden nedenfor eksporterer den planlagte oppgaven med Navnet ExportAppLog til en fil. Du kan endre filnavn og plassering per dine preferanser.

bildet nedenfor viser den FORVENTEDE utdatafilen FOR XML.

Sikkerhetskopiere En Planlagt Oppgave

Slette En Planlagt Oppgave

Når du har sikret en sikkerhetskopi av den planlagte oppgaven, vil du kan nå fjerne den planlagte oppgaven. Koden nedenfor sletter den planlagte oppgaven med Navnet ExportAppLog. Kopier koden nedenfor og kjør I PowerShell.

# Unregister the scheduled taskUnregister-ScheduledTask -TaskName 'ExportAppLog' -Confirm:$false

selv om det ikke er nødvendig, er det alltid godt å bekrefte resultatet av den planlagte oppgaveslettingen. Bruk kommandoen nedenfor til å kontrollere at den planlagte oppgaven ikke lenger finnes.

Get-ScheduledTask -TaskName 'ExportAppLog'

hvis den planlagte oppgaven ikke lenger eksisterer, bør du få en utgang som vist nedenfor.

Kontrollerer om den planlagte oppgaven ikke lenger eksisterer

merk at den planlagte oppgaven backup ikke inkluderer passord.

Gjenoppretter En Planlagt Oppgave

så du har slettet den planlagte oppgaven, og så viser det seg at du ikke skulle! Hva nå? Denne typen situasjon gjør at du setter pris på begrepet sikkerhetskopier enda mer.

du kan gjenskape den planlagte oppgaven ved HJELP AV XML-sikkerhetskopifilen Med PowerShell. Her er hvordan du kan gjenopprette.

importer FØRST XML-sikkerhetskopien til PowerShell-økten. Koden nedenfor importerer filen c:\temp\ExportAppLog.xml. Som et resultat vil $stBackup variabelen holde de importerte dataene.

# Import the Schedule Task backup$stBackup = Import-Clixml -Path c:\temp\ExportAppLog.xml

bruk deretter koden nedenfor for å tilbakestille oppgavelederensLogOnType verdi tilInteractive. Nullstilling Av LogonType-verdien er avgjørende for å sikre vellykket planlagt aktivitetsgjenoppretting.

# Reset the logon type to "Run only when the user is logged on."$stBackup.Principal.LogonType = 'Interactive'

det neste trinnet er å opprette et Nytt Planlagt Oppgaveobjekt. Koden nedenfor oppretter en ny planlagt oppgave. Variabelen$restoreTask lagrer det resulterende planlagte aktivitetsobjektet.

du vil legge merke til at verdiene som sendes til parametrene, er de som importeres fra backup. De importerte verdiene er i$restoreTask variabelen. Parametrene er ActionTriggerSettingsog Principal.

når du har opprettet det planlagte oppgaveobjektet, er det på tide å registrere den planlagte oppgaven. Bruk koden nedenfor til å registrere den gjenopprettede planlagte oppgaven.

i dette eksemplet er oppgavenavnet ‘ExportAppLog_restored.’ParameterenInputObject godtar det planlagte oppgaveobjektet i$restoreTask variabelen. Pass på at du bruker riktiguser ogpassword verdier.

koden er nå fullført. Kopier og kjør koden I PowerShell for å gjenopprette den slettede planlagte oppgaven. Skjermbildet nedenfor viser forventet utgang etter å ha kjørt koden.

Gjenopprette en slettet planlagt oppgave fra EN XML backup

nå er den planlagte oppgaven registrert i systemet. Skjermbildet nedenfor viser den gjenopprettede planlagte oppgaven.

Finne den gjenopprettede planlagte oppgaven

Sammendrag

Funksjonen For Planlagte Oppgaver I Windows er et utmerket verktøy for å sette opp oppgaver eller jobber. Du kan lage de mest grunnleggende til mer komplekse oppgaver. Innstillinger og alternativer er fleksible.

med Modulen Powershell Planlagte Oppgaver er det mulig å sette opp planlagte oppgaver ved Hjelp Av PowerShell-kommandoer. Denne modulen gir mulighet og midler til å opprette og distribuere planlagte oppgaver programmatisk på lokale og eksterne datamaskiner.Microsoft har ikke oppdatert ScheduledTasks-modulen, og noen avanserte innstillinger er ennå ikke lett eksponert som PowerShell-cmdleter. Et eksempel er å skape en utløser for » on workstation unlock.»Men du kan oppnå disse avanserte innstillingene ved å bruke den eksisterende OPPGAVEPLANLEGGEREN CIM-klassen.

Likevel, PowerShell Planlagte Oppgaver modulen fortsatt er en utmerket og dyktig verktøy som du kan legge Til Din PowerShell arsenal.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.