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.
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.
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.
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.
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.
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.
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 $taskPrincipal
og $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 erWin8
. 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.
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.
Og som du kan se nedenfor, er det nå to utløsere I Den Planlagte oppgaven ExportAppLog.
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.
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.
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 Action
Trigger
Settings
og 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.
nå er den planlagte oppgaven registrert i systemet. Skjermbildet nedenfor viser 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.