about_Scheduled_Jobs
Korte beschrijving
Beschrijft geplande taken en legt uit hoe u geplande taken gebruikt en beheert in PowerShell en in Task Scheduler.
Lange beschrijving
Geplande PowerShell-taken zijn een nuttige hybride versie van PowerShell-achtergrondtaken en Task Scheduler taken.
Net als Bij PowerShell-achtergrondtaken worden geplande taken asynchroon op de achtergrond uitgevoerd. Exemplaren van geplande taken die zijn uitgevoerd, kunnen worden beheerd met behulp van de taak-cmdlets, zoals Start-Job , Get-Job , en Stop-Job Receive-Job .
Net Task Scheduler taken worden geplande taken op schijf opgeslagen. U kunt de taken in Task Scheduler weergeven en beheren, ze naar behoefte in- en uitschakelen, ze uitvoeren of gebruiken als sjablonen, een eenmalige of terugkerende planning opstellen voor het starten van de taken of voorwaarden instellen waaronder de taken starten.
Bovendien worden de resultaten van geplande taak instances opgeslagen op schijf in een gemakkelijk toegankelijke indeling, waardoor een logboek van taakuitvoer wordt uitgevoerd. Geplande taken worden voorzien van een aangepaste set cmdlets voor het beheren ervan. Met de cmdlets kunt u geplande taken, taaktriggers en taakopties maken, bewerken, beheren, uitschakelen en opnieuw inschakelen.
Deze uitgebreide en flexibele set hulpprogramma's maken geplande taken een essentieel onderdeel van veel professionele PowerShell IT-oplossingen.
De geplande taak-cmdlets zijn opgenomen in de PSScheduledJob-module die is geïnstalleerd met PowerShell. Deze module is geïntroduceerd in PowerShell 3.0 en werkt in PowerShell 3.0 en latere versies van PowerShell. Zie PSScheduledJobvoor meer informatie over de cmdlets in de module PSScheduledJob.
Zie voor meer informatie over PowerShell-achtergrondtaken about_Jobs.
Zie Task Scheduler voor meer informatie over Task Scheduler.
Notitie
U kunt geplande PowerShell-taken weergeven en beheren in Task Scheduler. De PowerShell-taken en geplande taak-cmdlets werken alleen op geplande taken die in PowerShell worden gemaakt.
Snel starten
In dit voorbeeld wordt een geplande taak gemaakt die elke dag om 3:00 uur wordt gestart en de Get-Process cmdlet wordt uitgevoerd. De taak wordt gestart, zelfs als de computer op accu's draait.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
De Get-ScheduledJob cmdlet haalt de geplande taken op de lokale computer op.
Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Get-JobTriggerhaalt de taaktriggers van ProcessJob op. De invoerparameters geven de geplande taak op, niet de trigger, omdat triggers worden opgeslagen in een geplande taak.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
In dit voorbeeld wordt de parameter ContinueIfGoingOnBattery van de cmdlet gebruikt om de eigenschap Set-ScheduledJob StopIfGoingOnBatteries van ProcessJob te wijzigen in False.
Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries : True
StopIfGoingOnBatteries : False
WakeToRun : True
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
De Get-ScheduledJob cmdlet haalt de geplande taak ProcessJob op.
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
De Get-Job cmdlet haalt alle exemplaren op van de geplande taak ProcessJob die tot nu toe zijn uitgevoerd. De Get-Job cmdlet krijgt geplande taken alleen wanneer de MODULE PSScheduledJob wordt geïmporteerd in de huidige sessie.
Tip
U ziet dat u de geplande taak-cmdlets gebruikt om geplande taken te beheren, maar u gebruikt de taak-cmdlets om exemplaren van geplande taken te beheren.
Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
De cmdlet haalt de resultaten op van de meest recente instantie van de geplande Receive-Job processjob-taak (id = 51).
Receive-Job -ID 51
Hoewel de opdracht niet de parameter Keep bevat, worden de resultaten van de taak op schijf opgeslagen totdat u ze verwijdert of het maximum aantal resultaten Receive-Job wordt overschreden.
De taakresultaten zijn niet meer beschikbaar in deze sessie, maar als u een nieuwe sessie start of een nieuw PowerShell-venster opent, zijn de resultaten van de taak weer beschikbaar.
De volgende opdracht gebruikt de DefinitionName parameter van de Start-Job cmdlet voor het starten van de geplande taak ProcessJob.
Taken die zijn gestart met behulp van de cmdlet zijn standaard Start-Job PowerShell-achtergrondtaken, niet exemplaren van de geplande taak. Net als bij alle achtergrondtaken worden deze taken onmiddellijk uitgevoerd, zijn ze niet onderworpen aan taakopties of worden ze beïnvloed door taaktriggers en wordt de uitvoer niet opgeslagen in de uitvoermap van de geplande taakmap.
Start-Job -DefinitionName ProcessJob
De Unregister-ScheduledJob cmdlet verwijdert de geplande taak ProcessJob en alle opgeslagen resultaten van de taak-exemplaren.
Unregister-ScheduledJob ProcessJob
Concepten van geplande taken
Een geplande taak voert opdrachten of een script uit. Een geplande taak kan taaktriggers bevatten die de taak starten en taakopties die voorwaarden instellen voor het uitvoeren van de taak.
Een taaktrigger start automatisch een geplande taak. Een taaktrigger kan een eenmalige of terugkerende planning bevatten of een gebeurtenis opgeven, zoals wanneer een gebruiker zich aanmeldt of Windows start. Een geplande taak kan een of meer taaktriggers hebben en u kunt taaktriggers maken, toevoegen, inschakelen, uitschakelen en ophalen.
Taaktriggers zijn optioneel. U kunt geplande taken direct starten met behulp van de , of door Start-Job cmdlet de parameter RunNow toe te voegen aan uw Register-ScheduledJob opdracht.
Met taakopties worden de voorwaarden voor het uitvoeren van een geplande taak ingesteld. Elke geplande taak heeft één object voor taakopties. U kunt taakoptiesobjecten maken en bewerken en deze toevoegen aan een of meer geplande taken.
Telkens wanneer een geplande taak wordt gestart, wordt er een taak-exemplaar gemaakt. Gebruik de PowerShell-taak-cmdlets om het taakin exemplaar weer te geven en te beheren.
Geplande taken worden op schijf opgeslagen en gebruiken het cmdlet-woord, Register , in plaats van New . De XML-bestanden bevinden zich op de lokale computer in de map $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs .
PowerShell maakt een map voor elke geplande taak en slaat de taakopdrachten, taaktriggers, taakopties en taakresultaten op in de geplande taakmap. Taaktriggers en taakopties worden niet onafhankelijk op schijf opgeslagen. Ze worden opgeslagen in de geplande taak-XML van elke geplande taak waaraan ze zijn gekoppeld.
Geplande taken, taaktriggers en taakopties worden in PowerShell weergegeven als objecten. De objecten zijn met elkaar verbonden, waardoor ze eenvoudig kunnen worden gevonden en gebruikt in opdrachten en scripts.
Geplande taken worden weergegeven als ScheduledJobDefinition-objecten. Het object ScheduledJobDefinition heeft een eigenschap JobTriggers die de taaktriggers van de geplande taak bevat en een eigenschap Options die de taakopties bevat. De scheduledJobTriggers- en ScheduledJobOptions-objecten die respectievelijk taaktriggers en taakopties vertegenwoordigen, hebben elk een jobdefinition-eigenschap die de geplande taak bevat waaraan ze zijn gekoppeld. Deze recursieve interconnectie maakt het gemakkelijk om de triggers en opties van een geplande taak te vinden en de geplande taak waaraan een taaktrigger of taakoptie is gekoppeld te zoeken, te scripten en weer te geven.
Zie ook
about_Scheduled_Jobs_Troubleshooting