Dela via


Om avancerade schemalagda jobb

Kort beskrivning

Förklarar avancerade schemalagda jobbämnen, inklusive filstrukturen som ligger till grund för schemalagda jobb.

Lång beskrivning

Schemalagda jobbkataloger och filer

Schemalagda PowerShell-jobb är både PowerShell-jobb och Schemaläggaraktiviteter. Varje schemalagt jobb registreras i Schemaläggaren och sparas på disk i XML-format för Microsoft .NET Framework serialisering.

När du skapar ett schemalagt jobb skapar PowerShell en katalog för det schemalagda jobbet i $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs katalogen på den lokala datorn. Katalognamnet är samma som jobbnamnet.

Följande är en exempelkatalog för 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

Varje schemalagt jobb har en egen katalog. Katalogen innehåller xml-filen för det schemalagda jobbet och en underkatalog för utdata .

$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

Katalogen Output för ett schemalagt jobb innehåller dess körningshistorik. Varje gång en jobbutlösare startar ett schemalagt jobb skapar PowerShell en tidsstämpel med namnet katalog i utdatakatalogen. Tidsstämpelkatalogen innehåller resultatet av jobbet i en Results.xml-fil och jobbstatusen i en Status.xml fil.

Följande kommando visar körningshistorikkatalogerna för det schemalagda jobbet ProcessJob .

$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

Du kan öppna och undersöka ScheduledJobDefinition.xml, Results.xml och Status.xml filer eller använda cmdleten Select-XML för att parsa filerna.

Varning

Redigera inte XML-filerna. Om en XML-fil innehåller ogiltig XML tar PowerShell bort det schemalagda jobbet och dess körningshistorik, inklusive jobbresultat.

Starta ett schemalagt jobb omedelbart

Du kan starta ett schemalagt jobb direkt på något av två sätt:

  • Kör cmdleten Start-Job för att starta ett schemalagt jobb.
  • Lägg till RunNow-parametern i Register-ScheduledJob kommandot för att starta jobbet så snart kommandot körs.

Jobb som startas med hjälp av cmdleten Start-Job är vanliga PowerShell-bakgrundsjobb, inte instanser av det schemalagda jobbet. Precis som alla bakgrundsjobb startar de här jobben omedelbart, de omfattas inte av jobbalternativ eller påverkas av jobbutlösare. Jobbutdata sparas inte i katalogen Output i den schemalagda jobbkatalogen.

Följande kommando använder parametern DefinitionName för cmdleten Start-Job för att starta det schemalagda jobbet ProcessJob.

Start-Job -DefinitionName ProcessJob

Om du vill hantera jobbet och hämta jobbresultatet använder du jobb-cmdletarna. Mer information om jobb-cmdletar finns i about_Jobs.

Anteckning

Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste modulen PSScheduledJob importeras till sessionen. Om du vill importera PSScheduledJob-modulen skriver Import-Module PSScheduledJob eller använder du en schemalagd jobb-cmdlet, till exempel Get-ScheduledJob.

Byt namn på ett schemalagt jobb

Om du vill byta namn på ett schemalagt jobb använder du parametern Namn för cmdleten Set-ScheduledJob . När du byter namn på ett schemalagt jobb ändrar PowerShell namnet på det schemalagda jobbet och den schemalagda jobbkatalogen. Men det ändrar inte namnen på instanser av det schemalagda jobbet som redan har körts.

Hämta start- och sluttider

Om du vill hämta datum och tider då jobbinstanserna startades och avslutades använder du egenskaperna PSBeginTime och PSEndTime för objektet ScheduledJob som Get-Job returneras för schemalagda jobb.

I följande exempel används parametern Egenskap för cmdleten Format-Table för att visa egenskaperna PSBeginTime och PSEndTime för varje jobbinstans i en tabell. En beräknad egenskap med namnet Etikett visar den förflutna tiden för varje jobbinstans.

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

Hantera körningshistorik

Du kan fastställa antalet jobbinstansresultat som sparas för varje schemalagt jobb och ta bort körningshistoriken och sparade jobbresultat för ett schemalagt jobb.

Egenskapen ExecutionHistoryLength för ett schemalagt jobb avgör hur många jobbinstansresultat som sparas för det schemalagda jobbet. När antalet sparade resultat överskrider värdet för egenskapen ExecutionHistoryLength tar PowerShell bort resultatet från den äldsta instansen för att göra plats för resultatet av den senaste instansen.

Som standard sparar PowerShell körningshistoriken och resultatet för 32 instanser av varje schemalagt jobb. Om du vill ändra det värdet använder du parametrarna MaxResultCount för Register-ScheduledJob cmdletarna eller Set-ScheduledJob .

Om du vill ta bort körningshistoriken och alla resultat för ett schemalagt jobb använder du parametern ClearExecutionHistory för cmdleten Set-ScheduledJob . Om du tar bort den här körningshistoriken hindrar du inte PowerShell från att spara resultatet av nya instanser av det schemalagda jobbet.

I följande exempel används splatting för att skapa $JobParms som är parametervärden som skickas till cmdleten Register-ScheduledJob . Mer information finns i about_Splatting.md. Används Register-ScheduledJob@JobParms för att skapa ett schemalagt jobb. Kommandot använder parametern MaxResultCount med värdet 12 för att spara endast de 12 senaste jobbinstansresultaten för det schemalagda jobbet.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  MaxResultCount = "12"
}

Register-ScheduledJob @JobParms

Följande kommando använder parametern MaxResultCount för cmdleten Set-ScheduledJob för att öka antalet sparade instansresultat till 15.

Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15

Följande kommando tar bort körningshistoriken och de aktuella sparade resultaten av det schemalagda jobbet ProcessJob .

Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory

Följande kommando hämtar värdena för egenskaperna name och ExecutionHistoryLength för alla schemalagda jobb på datorn och visar dem i en tabell.

Get-ScheduledJob |
  Format-Table -Property Name, ExecutionHistoryLength -AutoSize

Se även

about_Scheduled_Jobs_Basics

about_Scheduled_Jobs_Troubleshooting

about_Scheduled_Jobs

about_Splatting.md

Schemaläggaren