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-Job
en Stop-Job
Receive-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.