har du brug for at oprette masser af planlagte opgaver eller automatisere oprettelse af planlagte opgaver? I så fald er du heldig. I denne artikel lærer du, hvordan du administrerer planlagte opgaver ved hjælp af
planlagte opgaver, der udfører enkle handlinger, er hurtige at lave og komfortable nok til at gentage ved hjælp af Task Scheduler app interface (GUI). Men systemadministratorer eller udviklere skal muligvis implementere mere komplicerede opgaver med flere tidsplaner, udløsere eller argumenter.
heldigvis kan du bruge
Indholdsfortegnelse
forudsætninger
da dette er en learning-by-doing type artikel, er der nogle forudsætninger, så du kan følge med. Nedenfor er kravene til at oprette planlagte opgaver ved hjælp af
- eksemplerne i denne artikel bruger vinduer 10. Server 2012 og nyere kan gøre det samme.
- vinduer Strømshell 5.1 eller Strømshell 7.
- det ville hjælpe, hvis du havde en script editor som Visual Studio Code, Notepad++ eller.
oprettelse af en ny planlagt opgave
en planlagt opgave kræver mindst to komponenter for at fungere; handling og trigger. Tilføjelse af en sikkerhedskontekst og et sæt relaterede indstillinger er valgfrit. For bedre forståelse henvises til den korte forklaring for hver planlagt opgavekomponent nedenfor:
- handling – den handling, der udføres af den planlagte opgave. En handling er typisk at køre et program eller et script. En planlagt opgave kan have mere end en handling.
- Trigger-styrer, når den planlagte opgave kører. Udløsere kan være tidsbaserede, ligesom at indstille en tidsplan for daglig eller timeløn gentagelse. Udløsere kan også være aktivitetsbaserede, som kører en opgave baseret på registrerede aktiviteter som computerstart, en bruger logger ind eller loggede begivenheder.
- Principal-styrer den sikkerhedskontekst, der bruges til at køre den planlagte opgave. En hovedstol inkluderer blandt andet brugerkontoen og det krævede privilegium, der bruges af den planlagte opgave.
- indstillinger-er et sæt af indstillinger og betingelser, der styrer, hvordan den planlagte opgave adfærd. Som et eksempel kan du tilpasse en opgave til at blive fjernet efter et fortløbende antal dage, hvor opgaven er ubrugt.
under en planlagt opgaveoprettelse er hovedstolen og indstillingerne ikke eksplicit påkrævet. Standardværdierne bruges i stedet.
oprettelse af en Opgavehandling
når du vil have en planlagt opgave til at gøre noget, skal du oprette en ny opgavehandling. I dette eksempel opretter du en opgave, der kalder Strømskallen.kør et script. Sørg for at have din script editor klar.
Bemærk, at scriptet nedenfor kun er et tilfældigt eksempel, og du er ikke forpligtet til at bruge det. Du kan bruge et hvilket som helst script, du ønsker. Brug af scriptet nedenfor skaber dog et let verificerbart resultat, der kan bekræfte, om den planlagte opgave fungerede.
eksempelscriptet nedenfor, når det udføres, får de ti seneste begivenheder fra applikationshændelsesloggen. Derefter eksportere begivenhederne til en ny c:\temp mappe. Kopier koden nedenfor, indsæt den i din script editor og gem med filnavnet Get-LatestAppLog.ps1 i enhver mappe, du ønsker.
koden nedenfor brugerNew-ScheduledTaskAction
til at oprette et nyt objekt med planlagt opgave, der er gemt i variablen$taskAction
. Denne handling vil kalde powershell.exe
eksekverbar og videregive argumentet for at køre C:\scripts\Get-LatestAppLog.ps1.
Kopier kommandoen ovenfor og kør den i Kraftshell. Det resulterende objekt i $taskAction
variablen skal se ud som skærmbilledet nedenfor.
tilføjelse af en Trigger
nu hvor du har oprettet en opgavehandling, er det næste trin er at definere, hvornår opgaven skal køre. Den cmdlet, der skal bruges til at oprette en trigger, er New-ScheduledTaskTrigger
cmdlet. Kommandoen nedenfor opretter en trigger til at køre dagligt kl 3 om eftermiddagen. Kopier og kør koden i Kraftshell.
# Create a new trigger (Daily at 3 AM)$taskTrigger = New-ScheduledTaskTrigger -Daily -At 3PM$tasktrigger
det resulterende objekt i$tasktrigger
variablen skal se det samme som billedet nedenfor.
registrering af opgaven
indtil videre har du oprettet basiskravene for at oprette en ny planlagt opgave. Det næste trin er at oprette den planlagte opgave og registrere den i systemet.
koden nedenfor brugerRegister-ScheduledTask
cmdlet til at registrere den planlagte opgave. Parameteren-Action
er nødvendig for at videregive opgavehandlingsobjektet, der er gemt i variablen$taskAction
. Parameteren-Trigger
er nødvendig for at passere$taskTrigger
variabelt indhold.
# 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 kør den i Kraftshell. Som følge heraf registreres den nye planlagte opgave som vist nedenfor.
kørsel af opgaven
når du har oprettet en planlagt opgave, skal du bekræfte, at den planlagte opgave er opgaven findes nu i systemet. Åbn Opgaveplanlæggeren, og find den planlagte opgave på listen. Du skal se den registrerede opgave på listen.
Du kan også bekræfte, at den registrerede planlagte opgave eksisterer ved at køre kommandoen nedenfor.
Get-ScheduledTaskInfo -TaskName ExportAppLog
Du skal derefter se en lignende output, som skærmbilledet af resultatet nedenfor.
og endelig skal din nye planlagte opgave arbejde for at afgøre, om det, du gjorde hidtil, var vellykket. For at teste den planlagte opgave kan du enten vente på den næste køreplan eller bruge kommandoen nedenfor til manuelt at udløse.
Start-ScheduledTask -TaskName ExportAppLog
Når du har kørt koden, skal du se et lignende resultat som det, der er vist nedenfor. Som du kan se, kørte koden oprettet en HML-fil, hvilket indikerer, at den planlagte opgave fungerede som forventet.
opdatering af en eksisterende planlagt opgave
når du har oprettet en planlagt opgave, kan nogle aspekter af den muligvis opdateres på et tidspunkt. Måske vil du få det til at køre en time tidligere eller ændre placeringen af scriptfilen. Det er nogle af de ændringer i den planlagte opgave, der kan være påkrævet.
i de næste afsnit lærer du, hvordan du foretager ændringer i eksisterende registrerede planlagte opgaver ved hjælp af
ændring af brugerkonto, sikkerhedsindstillinger og kompatibilitetsindstillinger
i det foregående afsnit kører den planlagte opgave under den samme brugerkontokontekst, der oprettede den. Hvad hvis opgaven skal køre ved hjælp af en anden brugerkonto, f.eks.
i dette eksempel ændrer du sikkerhedsindstillingerne for den planlagte opgave til nedenstående indstillinger.
- du skal ændre brugerkontoen for at køre den planlagte opgave.
- lad opgaven køre, om brugeren er logget ind eller ej.
- Kør med de højeste niveauer af privilegier.
- Indstil opgavens kompatibilitet til Vinduer 10.
den første linje i koden nedenfor opretter et hovedobjekt med den nye brugerkonto og indstiller opgaven til at køre med de højeste privilegier. Sørg for at ændre værdien af parameteren -UserID
efter behov. Den anden linje konfigurerer opgavens kompatibilitet med vinduer 10.
endelig opdaterer den tredje linje ExportAppLog
**planlagt opgave ved hjælp af de værdier, der er gemt ithe $taskPrincipal
og$taskSettings
variabler. Kopier koden nedenfor og kør den i Kraftshell.
# 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 bemærke, at
-Compatibility
parameterværdien erWin8
. Bliv ikke forvirret. Det lader til, at Microsoft ikke har opdateret den” nyeste ” valg version siden Vinduer 8. Ikke desto mindre angiverWin8
værdi vil resultere i Vinduer 10 kompatibilitet.
dernæst bruger kommandoen nedenforSet-ScheduledTask
cmdlet til at opdatere den eksisterendeExportAppLog
**planlagt opgave. Sørg for at ændre adgangskodeværdien i parameteren -Password
for at bruge brugerkontoens korrekte adgangskode.
# Update the task user account and passwordSet-ScheduledTask -TaskName 'ExportAppLog' -User $taskPrincipal.UserID -Password 'PASSWORD'
efter at have kørt ovenstående kommando, bliver den planlagte opgave opdateret. Hvis du kontrollerer den planlagte opgave, kan du bekræfte, at sikkerhedsindstillingerne er ændret.
ændring af udløseren
nogle gange skal udløserplanen være tilgængelig for alle ændret. Måske på grund af nogle operationelle justeringer eller ressourceoptimering. Under alle omstændigheder kan du også bruge
i øjeblikket er den planlagte opgave Eksportapplog udløses hver dag på 3 PM. Antag at du skal ændre udløserplanen til dagligt klokken 4:30 og 1:00. Du skal først oprette to nye opgaveudløserobjekter til de to tidsplaner.
$taskTrigger1 = New-ScheduledTaskTrigger -Daily -At 4:30PM$taskTrigger2 = New-ScheduledTaskTrigger -Daily -At 1:00AM
brug derefter kommandoen nedenfor for at opdatere den planlagte opgaves trigger. Du vil bemærke -Trigger
parameteren accepterer de to opgaveudløserobjekter, nemlig $taskTrigger1
og $taskTrigger2
.
da du opdaterer en planlagt opgave med en adgangskode, der er gemt til brugerkontoen, skal du angive -User
og -Password
værdierne igen.
Set-ScheduledTask -TaskName 'ExportAppLog' -Trigger $taskTrigger1,$taskTrigger2 -User 'DEVPC\svcTask' -Password 'PASSWORD'
nedenfor er det forventede resultat efter at have kørt koden.
og som du kan se nedenfor, er der nu to udløsere i Eksportapplog planlagt opgave.
sletning og gendannelse af en planlagt opgave
planlagte opgaver kan blive forældede over tid. På et tidspunkt skal du muligvis udføre husholdning til planlagte opgaver. I dette afsnit lærer du, hvordan du administrerer planlagt sletning af opgaver.
sikkerhedskopiering af en planlagt opgave
før du fortsætter med at slette planlagte opgaver, er det god praksis at lave en sikkerhedskopi først. Sikkerhedskopiering af planlagte opgaver giver dig et gendannelsespunkt for, hvornår tingene går galt.
der er ingen indbygget cmdlet til at lave en planlagt opgavebackup. Men alt i Kraftshell er et objekt, og det er muligt at eksportere objekter til fil. Når du skal sikkerhedskopiere et objekt til en fil, skal du bruge Import-Clixml
cmdlet.
eksempelkoden nedenfor eksporterer den planlagte opgave med navnet Eksportapplog til en fil. Du kan ændre filnavn og placering efter dine præferencer.
billedet nedenfor viser den forventede output-fil.
sletning af en planlagt opgave
Når du har sikret en sikkerhedskopi af den planlagte opgave, du kan nu fjerne den planlagte opgave. Koden nedenfor sletter den planlagte opgave med navnet Eksportapplog. Kopier koden nedenfor og kør i Kraftshell.
# Unregister the scheduled taskUnregister-ScheduledTask -TaskName 'ExportAppLog' -Confirm:$false
selvom det ikke er nødvendigt, er det altid godt at bekræfte resultatet af den planlagte opgavesletning. Brug kommandoen nedenfor til at kontrollere, at den planlagte opgave ikke længere eksisterer.
Get-ScheduledTask -TaskName 'ExportAppLog'
Hvis den planlagte opgave ikke længere eksisterer, skal du få et output som det, der vises nedenfor.
bemærk, at den planlagte opgavebackup ikke indeholder adgangskoder.
Gendannelse af en planlagt opgave
så du har slettet den planlagte opgave, og så viser det sig, at du ikke skulle! Hvad nu? Denne form for situation får dig til at sætte pris på begrebet sikkerhedskopier endnu mere.
Du kan genskabe den planlagte opgave ved hjælp af sikkerhedskopifilen. Og her er hvordan du kan gøre gendannelsen.først skal du importere sikkerhedskopien til din session. Koden nedenfor importerer filen c:\temp\ExportAppLog.- LML. Som følge heraf vil variablen $stBackup
holde de importerede data.
# Import the Schedule Task backup$stBackup = Import-Clixml -Path c:\temp\ExportAppLog.xml
brug derefter koden nedenfor til at nulstille task principal ‘ sLogOnType
værdi tilInteractive
. Nulstilling af LogonType-værdien er afgørende for at sikre en vellykket planlagt opgavegendannelse.
# Reset the logon type to "Run only when the user is logged on."$stBackup.Principal.LogonType = 'Interactive'
det næste trin er at oprette et nyt planlagt Opgaveobjekt. Koden nedenfor opretter en ny planlagt opgave. Variablen$restoreTask
gemmer det resulterende planlagte opgaveobjekt.
du vil bemærke, at de værdier, der overføres til parametrene, er dem, der importeres fra backup. De importerede værdier er i variablen $restoreTask
. Parametrene er Action
Trigger
Settings
og Principal.
efter oprettelse af det planlagte opgaveobjekt er det tid til at registrere den planlagte opgave. Brug koden nedenfor til at registrere den gendannede planlagte opgave.
i dette eksempel er opgavenavnet ‘Eksportapplog_restored.’ParameterenInputObject
accepterer det planlagte opgaveobjekt i variablen$restoreTask
. Sørg for at bruge de korrekte user
og password
værdier.
koden er nu færdig. Kopier og kør koden for at gendanne den slettede planlagte opgave. Skærmbilledet nedenfor viser det forventede output efter at have kørt koden.
nu er den planlagte opgave registreret i systemet. Skærmbilledet nedenfor viser den gendannede planlagte opgave.
oversigt
funktionen planlagte opgaver i vinduer er et fremragende værktøj til opsætning af opgaver eller job. Du kan oprette de mest basale til mere komplekse opgaver. Indstillinger og indstillinger er fleksible.
med modulet planlagte opgaver er det muligt at konfigurere planlagte opgaver ved hjælp af kommandoer. Dette modul giver mulighed for og midler til at oprette og implementere planlagte opgaver programmatisk på de lokale og eksterne computere.
Microsoft har ikke opdateret modulet ScheduledTasks, og nogle avancerede indstillinger er endnu ikke let eksponeret som cmdlets. Et eksempel er at skabe en trigger til ” on arbejdsstation unlock.”Men du kan opnå disse avancerede indstillinger ved at bruge den eksisterende task scheduler CIM klasse.
ikke desto mindre er modulet til planlagte opgaver stadig et fremragende og dygtigt værktøj, som du kan føje til dit arsenal.