about_Scheduled_Jobs_Basics

Korte beschrijving

Legt uit hoe u geplande taken maakt en beheert.

Lange beschrijving

Dit document laat zien hoe u basistaken voor het maken en beheren van geplande taken uitvoert. Zie voor meer informatie over geavanceerde taken about_Scheduled_Jobs_Advanced.

Zie PSScheduledJob voor meer informatie over de cmdlets in de module PSScheduledJob.

Een geplande taak maken

Gebruik de cmdlet om een geplande Register-ScheduledJob taak te maken. De cmdlet vereist een naam en de opdrachten of het script dat de taak wordt uitgevoerd. U kunt de taak onmiddellijk uitvoeren door de parameter RunNow toe te voegen of een taaktrigger maken en taakopties instellen wanneer u de taak maakt, of een bestaande taak bewerken.

Als u een taak wilt maken die een script wordt uitgevoerd, gebruikt u de parameter FilePath om het pad naar het scriptbestand op te geven. Gebruik de parameter ScriptBlock om een taak te maken die opdrachten wordt uitgevoerd.

De Register-ScheduledJob cmdlet maakt de ProcessJob, waarmee een opdracht wordt Get-Process uitgevoerd. Deze geplande taak heeft de standaardopties voor taak en geen taaktrigger.

Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id         Name            Triggers        Command       Enabled
--         ----            --------        -------       -------
8          ProcessJob      {}              Get-Process   True

Een taaktrigger maken

Taaktriggers starten automatisch een geplande taak. Een taaktrigger kan een eenmalige of terugkerende planning of een gebeurtenis zijn, zoals wanneer een gebruiker zich aanmeldt of Windows start. Elke taak kan nul, één of meerdere taaktriggers hebben.

Gebruik de cmdlet om een taaktrigger New-JobTrigger te maken. Met de volgende opdracht maakt u een taaktrigger die elke maandag en donderdag om 5:00 uur een taak start. De opdracht slaat de taaktrigger op in de $T variabele .

$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"

Taaktriggers zijn optioneel. U kunt een geplande taak op elk moment starten door de parameter Register-ScheduledJob RunNow toe te voegen aan uw opdracht of door de Start-Job cmdlets te gebruiken.

Een taaktrigger toevoegen

Wanneer u een taaktrigger toevoegt aan een geplande taak, wordt de taaktrigger toegevoegd aan het XML-bestand van de geplande taak voor de geplande taak en wordt deze onderdeel van de geplande taak.

U kunt een taaktrigger toevoegen aan een geplande taak wanneer u de geplande taak maakt of een bestaande taak bewerken. U kunt de taaktrigger van een geplande taak op elk moment wijzigen.

PowerShell maakt gebruik van een aantal van dezelfde taaktriggers die Task Scheduler gebruikt. Zie het Help-onderwerp voor de cmdlet New-JobTrigger voor gedetailleerde informatie over taaktriggers.

In het volgende voorbeeld wordt splatting gebruikt om te maken $JobParms . Dit zijn parameterwaarden die worden doorgegeven aan de Register-ScheduledJob cmdlet. Zie voor meer informatie about_Splatting.md. De Register-ScheduledJob gebruikt @JobParms om een geplande taak te maken. De parameter Trigger wordt gebruikt om de taaktrigger in de variabele op te $T geven.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Command}
  Trigger = $T
}

Register-ScheduledJob @JobParms

U kunt ook op elk moment een taaktrigger toevoegen aan een bestaande geplande taak. De Add-JobTrigger cmdlet voegt de taaktrigger in de variabele $T toe aan de geplande taak ProcessJob .

Add-JobTrigger -Name ProcessJob -Trigger $T

Als gevolg hiervan start de taaktrigger de ProcessJob automatisch elke maandag en donderdag om 5:00 uur.

Een taaktrigger krijgen

Gebruik de cmdlet om de taaktrigger van een geplande taak Get-JobTrigger op te halen. Gebruik de parameters Name, ID en InputObject om de geplande taak op te geven, niet de taaktrigger.

Get-JobTrigger haalt de taaktrigger van de processjob op.

Get-JobTrigger -Name ProcessJob
Id   Frequency       Time                   DaysOfWeek              Enabled
--   ---------       ----                   ----------              -------
1    Weekly          11/7/2011 5:00:00 AM   {Monday, Thursday}      True

Taakopties maken

Taakopties bepalen voorwaarden voor het starten en uitvoeren van de taak. Elke taak heeft de standaardopties voor de taak, tenzij u deze wijzigt. Omdat taakopties kunnen voorkomen dat een taak op het geplande tijdstip wordt uitgevoerd, is het belangrijk dat u de taakopties begrijpt en deze zorgvuldig gebruikt.

PowerShell maakt gebruik van dezelfde taakopties die Task Scheduler gebruikt. Zie het Help-onderwerp voor New-ScheduledJobOption voor gedetailleerde informatie over de taakopties.

Taakopties worden opgeslagen in het XML-bestand van de geplande taak. U kunt taakopties instellen wanneer u een geplande taak maakt of deze op elk moment wijzigt.

De New-ScheduledJobOption cmdlet maakt een geplande taakoptie waarin de optie WakeToRun scheduled job is ingesteld op True. Met de optie WakeToRun wordt de geplande taak uitgevoerd, zelfs als de computer zich in de slaapstand of sluimerstand op de geplande begintijd heeft. De opdracht slaat de taakopties op in de $O variabele .

$O = New-ScheduledJobOption -WakeToRun

Taakopties krijgen

Gebruik de cmdlet om de taakopties van een geplande taak Get-ScheduledJobOption op te halen. Gebruik de parameters Name, ID en InputObject om de geplande taak op te geven, niet de taakopties.

Get-ScheduledJobOption haalt de taakopties van de ProcessJob op.

Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries     : False
StopIfGoingOnBatteries : True
WakeToRun              : False
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

Taakopties wijzigen

U kunt de taakopties van een geplande taak wijzigen wanneer u een geplande taak maakt of een bestaande taak bewerkt.

De splatted worden $JobParms doorgegeven aan de Add-JobTrigger cmdlet om de proces job te maken. De parameter ScheduledJobOption wordt gebruikt om de taakopties in de variabele op te $O geven.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  ScheduledJobOption = $O
}

Add-JobTrigger @JobParms

U kunt de taakopties ook op elk moment wijzigen in een bestaande geplande taak. De volgende opdracht gebruikt de Set-ScheduledJobOption cmdlet om de waarde van de optie WakeToRun van de ProcessJob scheduledJob te wijzigen in True.

De Set cmdlets in de module PSScheduledJob , Set-ScheduledJobOption zoals de cmdlet, hebben geen naam- of id-parameters . U kunt de Parameter InputObject gebruiken om de geplande taakopties op te geven of een geplande Get-ScheduledJobOption taak van de cmdlet door te se pijpen naar Set-ScheduledJobOption.

In dit voorbeeld wordt de Get-ScheduledJob cmdlet gebruikt om de ProcessJob op te halen. Get-ScheduledJobOption De cmdlet wordt gebruikt om de taakopties op te halen in de ProcessJob Set-ScheduledJobOption en de cmdlet om de optie WakeToRun-taak in de ProcessJob te wijzigen in True.

Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
 Set-ScheduledJobOption -WakeToRun

Geplande taak-exemplaren krijgen

Wanneer een geplande taak wordt gestart, maakt PowerShell een taak-exemplaar dat vergelijkbaar is met een standaard PowerShell-achtergrond job. U kunt de taak-cmdlets, zoals Get-Job, en gebruiken Stop-Job om Receive-Job de taak-exemplaren te beheren.

Notitie

Als u de taak-cmdlets wilt gebruiken voor exemplaren van geplande taken, moet de module PSScheduledJob worden geïmporteerd in de sessie. Als u de MODULE PSScheduledJob wilt importeren, typt Import-Module PSScheduledJob of gebruikt u een geplande taak-cmdlet, zoals Get-ScheduledJob.

Gebruik de cmdlet om alle exemplaren van geplande PowerShell-taken en alle actieve standaardtaken Get-Job op te halen. De Import-Module cmdlet importeert de module PSScheduledJob en Get-Job haalt de taken op de lokale computer op.

Import-Module PSScheduledJob
Get-Job

Get-Job haalt exemplaren van ProcessJob op de lokale computer op.

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

In de standaardweergave wordt de begintijd niet weergegeven, waardoor exemplaren van dezelfde geplande taak doorgaans worden onderscheiden.

De Get-Job cmdlet verzendt objecten in de pijplijn. De Format-Table cmdlet geeft de eigenschappen Naam, Id en BeginTime van de geplande taak weer.

Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name       Id BeginTime
----       -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM

Geplande taakresultaten op halen

Gebruik de cmdlet om de resultaten van een exemplaar van een geplande taak Receive-Job op te halen.

Notitie

Als u de taak-cmdlets wilt gebruiken voor exemplaren van geplande taken, moet de module PSScheduledJob worden geïmporteerd in de sessie. Als u de MODULE PSScheduledJob wilt importeren, typt Import-Module PSScheduledJob of gebruikt u een geplande taak-cmdlet, zoals Get-ScheduledJob.

In deze voorbeelden worden de resultaten van het nieuwste exemplaar van de geplande taak ProcessJob (ID = 51) opgeslagen.

Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep

De resultaten van geplande taken worden op schijf opgeslagen, dus de parameter Keep van Receive-Job is niet vereist. Zonder de parameter Keep kunt u de resultaten van een geplande taak echter slechts eenmaal in elke PowerShell-sessie krijgen. Als u een nieuwe PowerShell-sessie wilt starten, typt PowerShell of opent u een nieuw PowerShell-venster.

Zie ook