Om grunderna för schemalagda jobb
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. Information om mer avancerade uppgifter finns i about_Scheduled_Jobs_Advanced.
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 processjobbet, 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ångs- eller å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 kl. 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 starta ett schemalagt jobb när som helst genom att lägga till parametern RunNow i kommandot Register-ScheduledJob
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 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 redigerar ett befintligt jobb. Du kan när som helst ändra jobbutlösaren för ett schemalagt jobb.
PowerShell använder några av de 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.
Register-ScheduledJob
Använder @JobParms
för att skapa ett schemalagt jobb. Den använder parametern Trigger (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 till 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 kl. 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
Så här skapar du jobbalternativ
Jobbalternativ anger villkor för att starta och köra jobbet. Alla 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 det schemalagda jobbet. 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
Om du vill hämta jobbalternativen för ett schemalagt jobb använder du cmdleten Get-ScheduledJobOption
. 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
Ändra 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 för alternativet ProcessJob scheduledJob till True.
Cmdletarna Set
i modulen PSScheduledJob , till exempel cmdleten Set-ScheduledJobOption
, har inte namn- eller ID-parametrar . Du kan använda parametern InputObject för att ange alternativen för schemalagt jobb eller skicka ett schemalagt jobb från Get-ScheduledJobOption
cmdleten 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 processjobbet till Sant.
Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
Set-ScheduledJobOption -WakeToRun
Så här hämtar du 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.
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
.
Om du vill hämta alla instanser av schemalagda PowerShell-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 åt.
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 resultat för schemalagt jobb
Om du vill hämta resultatet av en instans av ett schemalagt jobb använder du cmdleten Receive-Job
.
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
.
Det här exemplet hämtar resultatet av den senaste instansen av det schemalagda jobbet processjobb (ID = 51).
Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep
Resultatet av schemalagda jobb sparas på disken, så parametern Receive-Job
Behåll för 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.