Delen via


about_Scheduled_Jobs_Basics

Korte beschrijving

Hierin wordt uitgelegd hoe u geplande taken maakt en beheert.

Lange beschrijving

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

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

Een geplande taak maken

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

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

De Register-ScheduledJob cmdlet maakt de ProcessJob, waarmee een Get-Process opdracht wordt uitgevoerd. Deze geplande taak heeft de standaardtaakopties 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 eenmalig of terugkerend zijn of een gebeurtenis, bijvoorbeeld wanneer een gebruiker zich aanmeldt of Windows start. Elke taak kan nul, één of meerdere taaktriggers hebben.

Gebruik de New-JobTrigger cmdlet om een taaktrigger te maken. Met de volgende opdracht maakt u een taaktrigger die elke maandag en donderdag om 5:00 uur een taak start. Met de opdracht wordt de taaktrigger opgeslagen 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 gewenst moment starten door de parameter RunNow toe te voegen aan uw Register-ScheduledJob 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 gewenst moment wijzigen.

PowerShell maakt gebruik van een aantal van dezelfde taaktriggers die door Task Scheduler worden 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 welke parameterwaarden worden doorgegeven aan de Register-ScheduledJob cmdlet. Zie about_Splatting.md voor meer informatie. De Register-ScheduledJob toepassingen @JobParms voor het maken van een geplande taak. Hierbij wordt de triggerparameter gebruikt om de taaktrigger in de $T variabele op te geven.

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

Register-ScheduledJob @JobParms

U kunt ook op elk gewenst moment een taaktrigger toevoegen aan een bestaande geplande taak. Met Add-JobTrigger de cmdlet wordt de taaktrigger in de $T variabele toegevoegd aan de geplande ProcessJob-taak .

Add-JobTrigger -Name ProcessJob -Trigger $T

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

Een taaktrigger ophalen

Gebruik de Get-JobTrigger cmdlet om de taaktrigger van een geplande taak 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

Met taakopties kunt u voorwaarden instellen voor het starten en uitvoeren van de taak. Elke taak heeft de standaardtaakopties, tenzij u deze wijzigt. Omdat taakopties kunnen voorkomen dat een taak op het geplande tijdstip wordt uitgevoerd, is het belangrijk om inzicht te hebben in de taakopties en deze zorgvuldig te gebruiken.

PowerShell maakt gebruik van dezelfde taakopties die Door Task Scheduler worden 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 gewenst moment wijzigt.

De New-ScheduledJobOption cmdlet maakt een geplande taakoptie waarin de geplande taakoptie WakeToRun is ingesteld op True. Met de optie WakeToRun wordt de geplande taak uitgevoerd, zelfs als de computer de status Slaapstand of Sluimerstand heeft op de geplande begintijd. Met de opdracht worden de taakopties in de $O variabele opgeslagen.

$O = New-ScheduledJobOption -WakeToRun

Taakopties ophalen

Gebruik de Get-ScheduledJobOption cmdlet om de taakopties van een geplande taak 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 geplatte $JobParms gegevens worden doorgegeven aan de Add-JobTrigger cmdlet om de procestaak te maken. Hierbij wordt de parameter ScheduledJobOption gebruikt om de taakopties in de $O variabele op te geven.

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

Add-JobTrigger @JobParms

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

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

In dit voorbeeld wordt de Get-ScheduledJob cmdlet gebruikt om de ProcessJob op te halen. De cmdlet gebruikt de Get-ScheduledJobOption cmdlet om de taakopties op te halen in de ProcessJob en de Set-ScheduledJobOption cmdlet om de wakeToRun-taakoptie in processjob te wijzigen in Waar.

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

Geplande taakexemplaren ophalen

Wanneer een geplande taak wordt gestart, maakt PowerShell een taakexemplaren die vergelijkbaar is met een standaard PowerShell-achtergrondtaak. U kunt de taak-cmdlets gebruiken, zoals Get-Joben Stop-JobReceive-Job om de taakexemplaren te beheren.

Notitie

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

Gebruik de Get-Job cmdlet om alle exemplaren van geplande PowerShell-taken en alle actieve standaardtaken op te halen. De Import-Module cmdlet importeert de PSScheduledJob-module 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

Op 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 Name, 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 ophalen

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

Notitie

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

In deze voorbeelden worden de resultaten opgehaald van het nieuwste exemplaar van de geplande processjob-taak (id = 51).

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

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

Zie ook