about_Scheduled_Jobs_Basics
Kort beskrivning
Förklarar hur du skapar och hanterar schemalagda jobb.
Lång beskrivning
Det här dokumentet visar hur du utför grundläggande uppgifter för att skapa och hantera schemalagda jobb. Mer information om mer avancerade uppgifter finns i about_Scheduled_Jobs_Advanced.
Mer information om cmdlets som finns i modulen PSScheduledJob finns i PSScheduledJob.
Så här skapar du ett schemalagt jobb
Om du vill skapa ett schemalagt jobb använder du cmdleten Register-ScheduledJob
. Cmdleten kräver ett namn och de kommandon eller skript som jobbet kör. Du kan antingen köra jobbet direkt genom att lägga till parametern RunNow eller skapa en jobbutlösare och ange jobbalternativ när du skapar jobbet eller redigera ett befintligt jobb.
Om du vill skapa ett jobb som kör ett skript använder du parametern FilePath för att ange sökvägen till skriptfilen. Om du vill skapa ett jobb som kör kommandon använder du parametern ScriptBlock .
Cmdleten Register-ScheduledJob
skapar ProcessJob, som kör ett Get-Process
kommando. Det här schemalagda jobbet har standardalternativen för jobb och ingen jobbutlösare.
Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
8 ProcessJob {} Get-Process True
Så här skapar du en jobbutlösare
Jobbutlösare startar ett schemalagt jobb automatiskt. En jobbutlösare kan vara ett engångsschema eller ett återkommande schema eller en händelse, till exempel när en användare loggar in eller Windows startar. Varje jobb kan ha noll, en eller flera jobbutlösare.
Om du vill skapa en jobbutlösare använder du cmdleten New-JobTrigger
. Följande kommando skapar en jobbutlösare som startar ett jobb varje måndag och torsdag klockan 05:00.
Kommandot sparar jobbutlösaren i variabeln $T
.
$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"
Jobbutlösare är valfria. Du kan när som helst starta ett schemalagt jobb genom att lägga till parametern RunNow i Register-ScheduledJob
kommandot eller med hjälp Start-Job
av cmdletarna.
Så här lägger du till en jobbutlösare
När du lägger till en jobbutlösare i ett schemalagt jobb läggs jobbutlösaren till i XML-filen för det schemalagda jobbet och blir en del av det schemalagda jobbet.
Du kan lägga till en jobbutlösare i ett schemalagt jobb när du skapar det schemalagda jobbet eller redigera ett befintligt jobb. Du kan när som helst ändra jobbutlösaren för ett schemalagt jobb.
PowerShell använder några av samma jobbutlösare som Schemaläggaren använder. Detaljerad information om jobbutlösare finns i hjälpavsnittet för cmdleten New-JobTrigger .
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. Den använder parametern Utlösare för att ange jobbutlösaren i variabeln $T
.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Command}
Trigger = $T
}
Register-ScheduledJob @JobParms
Du kan också lägga till en jobbutlösare i ett befintligt schemalagt jobb när som helst. Cmdleten Add-JobTrigger
lägger till jobbutlösaren i variabeln $T
till det schemalagda jobbet ProcessJob .
Add-JobTrigger -Name ProcessJob -Trigger $T
Därför startar jobbutlösaren processjobbet automatiskt varje måndag och torsdag klockan 05:00.
Så här hämtar du en jobbutlösare
Använd cmdleten Get-JobTrigger
för att hämta jobbutlösaren för ett schemalagt jobb. Använd parametrarna Namn, ID och InputObject för att ange det schemalagda jobbet, inte jobbutlösaren.
Get-JobTrigger
hämtar jobbutlösaren för processjobbet.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 11/7/2011 5:00:00 AM {Monday, Thursday} True
Skapa jobbalternativ
Jobbalternativ upprättar villkor för att starta och köra jobbet. Varje jobb har standardalternativen för jobb om du inte ändrar dem. Eftersom jobbalternativ kan förhindra att ett jobb körs vid den schemalagda tiden är det viktigt att förstå jobbalternativen och använda dem noggrant.
PowerShell använder samma jobbalternativ som Schemaläggaren använder. Detaljerad information om jobbalternativen finns i hjälpavsnittet för New-ScheduledJobOption.
Jobbalternativ lagras i XML-filen för schemalagt jobb. Du kan ange jobbalternativ när du skapar ett schemalagt jobb eller ändrar dem när som helst.
Cmdleten New-ScheduledJobOption
skapar ett schemalagt jobbalternativ där alternativet WakeToRun-schemalagt jobb är inställt på Sant. Alternativet WakeToRun kör det schemalagda jobbet även om datorn är i viloläge eller viloläge vid den schemalagda starttiden. Kommandot sparar jobbalternativen i variabeln $O
.
$O = New-ScheduledJobOption -WakeToRun
Så här hämtar du jobbalternativ
Använd cmdleten för att hämta jobbalternativen för Get-ScheduledJobOption
ett schemalagt jobb. Använd parametrarna Namn, ID och InputObject för att ange det schemalagda jobbet, inte jobbalternativen.
Get-ScheduledJobOption
hämtar jobbalternativen för processjobbet.
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
Så här ändrar du jobbalternativ
Du kan ändra jobbalternativen för ett schemalagt jobb när du skapar ett schemalagt jobb eller redigerar ett befintligt jobb.
Den splattade skickas $JobParms
till cmdleten Add-JobTrigger
för att skapa processjobbet. Den använder parametern ScheduledJobOption för att ange jobbalternativen i variabeln $O
.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
ScheduledJobOption = $O
}
Add-JobTrigger @JobParms
Du kan också ändra jobbalternativen till ett befintligt schemalagt jobb när som helst.
Följande kommando använder cmdleten Set-ScheduledJobOption
för att ändra värdet för alternativet WakeToRun i alternativet ProcessJob scheduledJob till True.
Cmdletarna Set
i modulen PSScheduledJob , till exempel cmdleten Set-ScheduledJobOption
, har inte parametrar för namn eller ID . Du kan använda parametern InputObject för att ange schemalagda jobbalternativ eller skicka ett schemalagt jobb från Get-ScheduledJobOption
cmdlet till Set-ScheduledJobOption
.
I det här exemplet används cmdleten Get-ScheduledJob
för att hämta processjobbet. Den använder cmdleten Get-ScheduledJobOption
för att hämta jobbalternativen i ProcessJob och cmdleten Set-ScheduledJobOption
för att ändra alternativet WakeToRun-jobb i ProcessJob till True.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
Set-ScheduledJobOption -WakeToRun
Hämta schemalagda jobbinstanser
När ett schemalagt jobb startas skapar PowerShell en jobbinstans som liknar ett Standard PowerShell-bakgrundsjobb. Du kan använda jobb-cmdletar, till exempel Get-Job
, Stop-Job
och Receive-Job
för att hantera jobbinstanserna.
Kommentar
Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste modulen PSScheduledJob importeras till sessionen. Om du vill importera MODULen PSScheduledJob skriver Import-Module PSScheduledJob
eller använder du en schemalagd jobb-cmdlet, till exempel Get-ScheduledJob
.
Om du vill hämta alla instanser av PowerShell-schemalagda jobb och alla aktiva standardjobb använder du cmdleten Get-Job
. Cmdleten Import-Module
importerar MODULen PSScheduledJob och Get-Job
hämtar jobben på den lokala datorn.
Import-Module PSScheduledJob
Get-Job
Get-Job
hämtar instanser av ProcessJob på den lokala datorn.
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
Standardvisningen visar inte starttiden, vilket vanligtvis skiljer instanser av samma schemalagda jobb.
Cmdleten Get-Job
skickar objekt nedåt i pipelinen. Cmdleten Format-Table
visar egenskaperna Namn, ID och BeginTime för det schemalagda jobbet.
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
Hämta schemalagda jobbresultat
Om du vill få resultatet av en instans av ett schemalagt jobb använder du cmdleten Receive-Job
.
Kommentar
Om du vill använda jobb-cmdletar på instanser av schemalagda jobb måste modulen PSScheduledJob importeras till sessionen. Om du vill importera MODULen PSScheduledJob skriver Import-Module PSScheduledJob
eller använder du en schemalagd jobb-cmdlet, till exempel Get-ScheduledJob
.
Det här exemplet hämtar resultatet av den senaste instansen av det schemalagda jobbet ProcessJob (ID = 51).
Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep
Resultatet av schemalagda jobb sparas på disken, så parametern Receive-Job
Behåll krävs inte. Men utan parametern Behåll kan du bara få resultatet av ett schemalagt jobb en gång i varje PowerShell-session. Om du vill starta en ny PowerShell-session skriver PowerShell
eller öppnar du ett nytt PowerShell-fönster.
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för