Delen via


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

Zie ook