about_Scheduled_Jobs_Advanced
Korte beschrijving
Hierin worden geavanceerde onderwerpen over geplande taken uitgelegd, waaronder de bestandsstructuur die ten grondslag staat aan geplande taken.
Lange beschrijving
Zie PSScheduledJob voor meer informatie over de cmdlets in de PSScheduledJob-module.
Geplande taakmappen en -bestanden
Geplande PowerShell-taken zijn zowel PowerShell-taken als Taakplanner-taken. Elke geplande taak wordt geregistreerd in Task Scheduler en opgeslagen op schijf in de XML-indeling van Microsoft .NET Framework Serialisatie.
Wanneer u een geplande taak maakt, maakt PowerShell een map voor de geplande taak in de $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
map op de lokale computer. De mapnaam is hetzelfde als de taaknaam.
Hier volgt een voorbeeldmap scheduledjobs .
Get-ChildItem $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
Directory: C:\Users\User01\AppData\Local
\Microsoft\Windows\PowerShell\ScheduledJobs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/29/2011 10:03 AM ArchiveProjects
d---- 9/30/2011 1:18 PM Inventory
d---- 10/20/2011 9:15 AM Backup-Scripts
d---- 11/7/2011 10:40 AM ProcessJob
d---- 11/2/2011 10:25 AM SecureJob
d---- 9/27/2011 1:29 PM Test-HelpFiles
d---- 9/26/2011 4:22 PM DeployPackage
Elke geplande taak heeft een eigen map. De map bevat het XML-bestand met de geplande taak en een submap Uitvoer .
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/1/2011 3:00 PM Output
-a--- 11/1/2011 3:43 PM 7281 ScheduledJobDefinition.xml
De uitvoermap voor een geplande taak bevat de uitvoeringsgeschiedenis. Telkens wanneer een taaktrigger een geplande taak start, maakt PowerShell een tijdstempelmap in de uitvoermap. De tijdstempelmap bevat de resultaten van de taak in een Results.xml bestand en de taakstatus in een Status.xml bestand.
De volgende opdracht toont de uitvoeringsgeschiedenismappen voor de geplande ProcessJob-taak .
$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\ScheduledJobs\ProcessJob\Output"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft
\Windows\PowerShell\ScheduledJobs\ProcessJob\Output
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/2/2011 3:00 AM 20111102-030002-260
d---- 11/3/2011 3:00 AM 20111103-030002-277
d---- 11/4/2011 3:00 AM 20111104-030002-209
d---- 11/5/2011 3:00 AM 20111105-030002-251
d---- 11/6/2011 3:00 AM 20111106-030002-174
d---- 11/7/2011 12:00 AM 20111107-000001-914
d---- 11/7/2011 3:00 AM 20111107-030002-376
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob\Output\20111102-030002-260
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/2/2011 3:00 AM 581106 Results.xml
-a--- 11/2/2011 3:00 AM 9451 Status.xml
U kunt de ScheduledJobDefinition.xml, Results.xml en Status.xml bestanden openen en bekijken of de Select-XML
cmdlet gebruiken om de bestanden te parseren.
Waarschuwing
Bewerk de XML-bestanden niet. Als een XML-bestand ongeldige XML bevat, verwijdert PowerShell de geplande taak en de uitvoeringsgeschiedenis, inclusief taakresultaten.
Een geplande taak onmiddellijk starten
U kunt een geplande taak op twee manieren starten:
- Voer de
Start-Job
cmdlet uit om een geplande taak te starten. - Voeg de parameter RunNow toe aan uw
Register-ScheduledJob
opdracht om de taak te starten zodra de opdracht wordt uitgevoerd.
Taken die met behulp van de Start-Job
cmdlet worden gestart, zijn standaard PowerShell-achtergrondtaken, niet exemplaren van de geplande taak. Net als bij alle achtergrondtaken worden deze taken onmiddellijk gestart, zijn ze niet onderhevig aan taakopties of worden ze beïnvloed door taaktriggers. De taakuitvoer wordt niet opgeslagen in de uitvoermap van de geplande taakmap.
De volgende opdracht gebruikt de parameter DefinitionName van de Start-Job
cmdlet om de geplande processjob-taak te starten.
Start-Job -DefinitionName ProcessJob
Als u de taak wilt beheren en de taakresultaten wilt ophalen, gebruikt u de taak-cmdlets. Zie about_Jobs voor meer informatie over de taak-cmdlets.
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
.
De naam van een geplande taak wijzigen
Als u de naam van een geplande taak wilt wijzigen, gebruikt u de naamparameter van de Set-ScheduledJob
cmdlet. Wanneer u de naam van een geplande taak wijzigt, wordt in PowerShell de naam van de geplande taak en de geplande taakmap gewijzigd. De namen van exemplaren van de geplande taak die al zijn uitgevoerd, worden echter niet gewijzigd.
Begin- en eindtijden ophalen
Als u de datums en tijden wilt ophalen waarop taakexemplaren zijn gestart en beëindigd, gebruikt u de eigenschappen PSBeginTime en PSEndTime van het object ScheduledJob dat Get-Job
retourneert voor geplande taken.
In het volgende voorbeeld wordt de eigenschapsparameter van de Format-Table
cmdlet gebruikt om de eigenschappen PSBeginTime en PSEndTime van elk taakexemplaren in een tabel weer te geven. Met een berekende eigenschap met de naam Label wordt de verstreken tijd van elk taakexemplaren weergegeven.
Get-job -Name UpdateHelpJob |
Format-Table -Property ID, PSBeginTime, PSEndTime,
@{Label="Elapsed Time";Expression={$.PsEndTime - $.PSBeginTime}}
Id PSBeginTime PSEndTime Elapsed Time
-- ----------- --------- ------------
2 11/3/2011 3:00:01 AM 11/3/2011 3:00:39 AM 00:00:38.0053854
3 11/4/2011 3:00:02 AM 11/4/2011 3:01:01 AM 00:00:59.1188475
4 11/5/2011 3:00:02 AM 11/5/2011 3:00:50 AM 00:00:48.3692034
5 11/6/2011 3:00:01 AM 11/6/2011 3:00:54 AM 00:00:52.8013036
6 11/7/2011 3:00:01 AM 11/7/2011 3:00:38 AM 00:00:37.1930350
7 11/8/2011 3:00:01 AM 11/8/2011 3:00:57 AM 00:00:56.2570556
8 11/9/2011 3:00:03 AM 11/9/2011 3:00:55 AM 00:00:51.8142222
9 11/10/2011 3:00:02 AM 11/10/2011 3:00:42 AM 00:00:40.7195954
Uitvoeringsgeschiedenis beheren
U kunt het aantal resultaten van het taakexemplaren bepalen dat voor elke geplande taak wordt opgeslagen en de uitvoeringsgeschiedenis en de opgeslagen taakresultaten van een geplande taak verwijderen.
De eigenschap ExecutionHistoryLength van een geplande taak bepaalt hoeveel resultaten van het taakexemplaren worden opgeslagen voor de geplande taak. Wanneer het aantal opgeslagen resultaten de waarde van de eigenschap ExecutionHistoryLength overschrijdt, verwijdert PowerShell de resultaten van het oudste exemplaar om ruimte te maken voor de resultaten van de nieuwste instantie.
In PowerShell worden standaard de uitvoeringsgeschiedenis en resultaten van 32 exemplaren van elke geplande taak opgeslagen. Als u deze waarde wilt wijzigen, gebruikt u de parameters MaxResultCount van de Register-ScheduledJob
of Set-ScheduledJob
cmdlets.
Als u de uitvoeringsgeschiedenis en alle resultaten voor een geplande taak wilt verwijderen, gebruikt u de parameter ClearExecutionHistory van de Set-ScheduledJob
cmdlet. Als u deze uitvoeringsgeschiedenis verwijdert, wordt niet voorkomen dat PowerShell de resultaten van nieuwe exemplaren van de geplande taak opslaat.
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. De opdracht gebruikt de parameter MaxResultCount met de waarde 12 om alleen de 12 nieuwste resultaten van de geplande taak op te slaan.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
MaxResultCount = "12"
}
Register-ScheduledJob @JobParms
De volgende opdracht gebruikt de parameter MaxResultCount van de Set-ScheduledJob
cmdlet om het aantal opgeslagen exemplaarresultaten te verhogen naar 15.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15
Met de volgende opdracht worden de uitvoeringsgeschiedenis en de huidige opgeslagen resultaten van de geplande ProcessJob-taak verwijderd.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory
Met de volgende opdracht worden de waarden van de eigenschappen Name en ExecutionHistoryLength van alle geplande taken op de computer opgehaald en weergegeven in een tabel.
Get-ScheduledJob |
Format-Table -Property Name, ExecutionHistoryLength -AutoSize