Delen via


Basisbeginselen van geplande taken

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.

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 de taak uitvoert. 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 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

Met taaktriggers wordt automatisch een geplande taak gestart. Een taaktrigger kan een eenmalig of terugkerend schema of een gebeurtenis zijn, 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 bewerkt. 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 parameterwaarden te maken $JobParms die worden doorgegeven aan de Register-ScheduledJob cmdlet. Zie about_Splatting.md voor meer informatie. De Register-ScheduledJob gebruikt @JobParms om een geplande taak te maken. De parameter Trigger wordt 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. De Add-JobTrigger cmdlet voegt de taaktrigger in de $T variabele toe 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 5:00 uur.

Een taaktrigger ophalen

Gebruik de cmdlet om de taaktrigger van een geplande taak op te Get-JobTrigger 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 stellen voorwaarden vast 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 de taakopties te begrijpen en deze zorgvuldig te gebruiken.

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 gewenst moment wijzigt.

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

$O = New-ScheduledJobOption -WakeToRun

Taakopties ophalen

Gebruik de cmdlet om de taakopties van een geplande taak op te Get-ScheduledJobOption 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 $JobParms worden doorgegeven aan de Add-JobTrigger cmdlet om de procestaak te maken. De parameter ScheduledJobOption wordt 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. De volgende opdracht gebruikt de Set-ScheduledJobOption cmdlet om de waarde van de optie WakeToRun van processjob scheduledJob te wijzigen in True.

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

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

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

Geplande taakexemplaren ophalen

Wanneer een geplande taak wordt gestart, maakt PowerShell een taakinstantie die vergelijkbaar is met een standaard PowerShell-achtergrondtaak. U kunt de taak-cmdlets, zoals Get-Job, Stop-Job en Receive-Job gebruiken om de taakexemplaren 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 cmdlet voor een geplande taak, zoals Get-ScheduledJob.

Gebruik de cmdlet om alle exemplaren van geplande PowerShell-taken en alle actieve standaardtaken op te Get-Job 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 niet de begintijd weergegeven, die doorgaans exemplaren van dezelfde geplande taak onderscheidt.

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

Resultaten van geplande taken ophalen

Gebruik de cmdlet om de resultaten van een exemplaar van een geplande taak op te Receive-Job 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 cmdlet voor een geplande taak, zoals Get-ScheduledJob.

In dit voorbeeld 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 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 ophalen. Als u een nieuwe PowerShell-sessie wilt starten, typt PowerShell of opent u een nieuw PowerShell-venster.

Zie ook

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

about_Scheduled_Jobs

about_Splatting.md

Task Scheduler