Delen via


Over geplande taken

Korte beschrijving

Hierin worden geplande taken beschreven en wordt uitgelegd hoe u geplande taken gebruikt en beheert in PowerShell en in Task Scheduler.

Lange beschrijving

Geplande PowerShell-taken zijn een handige hybride combinatie van PowerShell-achtergrondtaken en Taakplanner-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, Stop-Joben Receive-Job.

Net als taken van Task Scheduler worden geplande taken opgeslagen op schijf. U kunt de taken weergeven en beheren in Task Scheduler, ze indien nodig in- en uitschakelen, ze uitvoeren of gebruiken als sjablonen, een eenmalige of terugkerende planning instellen voor het starten van de taken of voorwaarden instellen waaronder de taken beginnen.

Bovendien worden de resultaten van geplande taakexemplaren opgeslagen op schijf in een gemakkelijk toegankelijke indeling, waardoor een actief logboek van taakuitvoer wordt geboden. Geplande taken worden geleverd met 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 maakt geplande taken een essentieel onderdeel van veel professionele PowerShell IT-oplossingen.

De cmdlets voor geplande taken 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. Voor meer informatie over de cmdlets in de module PSScheduledJob .

Zie about_Jobs voor meer informatie over PowerShell-achtergrondtaken.

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 cmdlets voor geplande taken werken alleen voor geplande taken die zijn gemaakt in PowerShell.

Snel starten

In dit voorbeeld wordt een geplande taak gemaakt die elke dag om 3:00 uur begint en de Get-Process cmdlet wordt uitgevoerd. De taak wordt gestart, zelfs als de computer op batterijen werkt.

$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-JobTrigger haalt 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 Set-ScheduledJob cmdlet gebruikt om de eigenschap 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 van de geplande ProcessJob-taak op die tot nu toe zijn uitgevoerd. De Get-Job cmdlet haalt alleen geplande taken op wanneer de module PSScheduledJob wordt geïmporteerd in de huidige sessie.

Tip

U ziet dat u de cmdlets voor geplande taken 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 Receive-Job cmdlet haalt de resultaten op van het meest recente exemplaar van de geplande ProcessJob-taak (ID = 51).

Receive-Job -ID 51

Hoewel de Receive-Job opdracht niet de parameter Keep bevat, worden de resultaten van de taak opgeslagen op schijf totdat u ze verwijdert of het maximum aantal resultaten is 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.

Met de volgende opdracht wordt de parameter DefinitionName van de Start-Job cmdlet gebruikt om de geplande ProcessJob-taak te starten.

Taken die zijn gestart met behulp van de Start-Job cmdlet zijn standaard PowerShell-achtergrondtaken, geen exemplaren van de geplande taak. Net als alle achtergrondtaken worden deze taken onmiddellijk gestart, zijn ze niet onderhevig aan taakopties of worden ze niet 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 taakexemplaren.

Unregister-ScheduledJob ProcessJob

Concepten van geplande taken

Met een geplande taak worden opdrachten of een script uitgevoerd. Een geplande taak kan taaktriggers bevatten waarmee de taak wordt gestart en taakopties die voorwaarden instellen voor het uitvoeren van de taak.

Een taaktrigger start automatisch een geplande taak. Een taaktrigger kan een eenmalig of terugkerend schema bevatten of een gebeurtenis opgeven, bijvoorbeeld 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 onmiddellijk starten met behulp van de Start-Job cmdlet, of door de parameter RunNow toe te voegen aan uw Register-ScheduledJob opdracht.

Taakopties stellen de voorwaarden in voor het uitvoeren van een geplande taak. Elke geplande taak heeft één taakoptiesobject. U kunt taakopties maken en bewerken en deze toevoegen aan een of meer geplande taken.

Telkens wanneer een geplande taak wordt gestart, wordt er een taakexemplaren gemaakt. Gebruik de PowerShell-taak-cmdlets om het taakexemplaren weer te geven en te beheren.

Geplande taken worden opgeslagen op schijf en gebruiken de cmdlet-bewerking , Registerin 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 afzonderlijk opgeslagen op schijf. Ze worden opgeslagen in de XML van de geplande taak van elke geplande taak waaraan ze zijn gekoppeld.

Geplande taken, taaktriggers en taakopties worden in PowerShell als objecten weergegeven. De objecten zijn onderling gekoppeld, waardoor ze eenvoudig kunnen worden gedetecteerd 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 objecten ScheduledJobTriggers en ScheduledJobOptions die respectievelijk taaktriggers en taakopties vertegenwoordigen, hebben elk een eigenschap JobDefinition die de geplande taak bevat waaraan ze zijn gekoppeld. Deze recursieve onderlinge verbinding 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_Basics

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

Task Scheduler