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.