Register-ScheduledJob
Skapar ett schemalagt jobb.
Syntax
Register-ScheduledJob
[-ScriptBlock] <ScriptBlock>
[-Name] <String>
[-Trigger <ScheduledJobTrigger[]>]
[-InitializationScript <ScriptBlock>]
[-RunAs32]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-ScheduledJobOption <ScheduledJobOptions>]
[-ArgumentList <Object[]>]
[-MaxResultCount <Int32>]
[-RunNow]
[-RunEvery <TimeSpan>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Register-ScheduledJob
[-FilePath] <String>
[-Name] <String>
[-Trigger <ScheduledJobTrigger[]>]
[-InitializationScript <ScriptBlock>]
[-RunAs32]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-ScheduledJobOption <ScheduledJobOptions>]
[-ArgumentList <Object[]>]
[-MaxResultCount <Int32>]
[-RunNow]
[-RunEvery <TimeSpan>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdleten Register-ScheduledJob
skapar schemalagda jobb på den lokala datorn.
Ett schemalagt jobb är ett Windows PowerShell-bakgrundsjobb som kan startas automatiskt enligt ett engångs- eller återkommande schema. Schemalagda jobb lagras på disken och registreras i Schemaläggaren. Jobben kan hanteras i Schemaläggaren eller med hjälp av cmdletar för schemalagt jobb i Windows PowerShell.
När ett schemalagt jobb startar skapas en instans av det schemalagda jobbet. Schemalagda jobbinstanser är identiska med Windows PowerShell-bakgrundsjobb, förutom att resultaten sparas på disken. Använd jobb-cmdletarna, till exempel Start-Job
, Get-Job
och Receive-Job
för att starta, visa och hämta resultatet av jobbinstanserna.
Använd Register-ScheduledJob
för att skapa ett nytt schemalagt jobb. Om du vill ange de kommandon som det schemalagda jobbet kör använder du parametern ScriptBlock . Om du vill ange ett skript som jobbet kör använder du parametern FilePath .
Windows PowerShell-schemalagda jobb använder samma jobbutlösare och jobbalternativ som Schemaläggaren använder för schemalagda aktiviteter.
Utlösarparametern Register-ScheduledJob
för lägger till en eller flera jobbutlösare som startar jobbet. Parametern Utlösare är valfri, så du kan lägga till utlösare när du skapar det schemalagda jobbet, lägga till jobbutlösare senare, lägga till RunNow-parametern för att starta jobbet omedelbart, använda cmdleten Start-Job
för att starta jobbet omedelbart när som helst eller spara det origgade schemalagda jobbet som en mall för andra jobb.
Med parametern Alternativ kan du anpassa alternativinställningarna för det schemalagda jobbet. Parametern Alternativ är valfri, så du kan ange jobbalternativ när du skapar det schemalagda jobbet eller ändrar dem när som helst. Eftersom inställningar för jobbalternativ kan förhindra att det schemalagda jobbet körs granskar du jobbalternativen och ställer in dem noggrant.
Register-ScheduledJob
är en av en samling cmdletar för jobbschemaläggning i modulen PSScheduledJob som ingår i Windows PowerShell.
Mer information om schemalagda jobb finns i Om artiklar i modulen PSScheduledJob .
Importera modulen PSScheduledJob och skriv sedan: Get-Help about_Scheduled*
eller se about_Scheduled_Jobs.
Den här cmdleten introducerades i Windows PowerShell 3.0.
Exempel
Exempel 1: Skapa ett schemalagt jobb
Det här exemplet skapar ett schemalagt jobb på den lokala datorn.
Register-ScheduledJob -Name "Archive-Scripts" -ScriptBlock {
Get-ChildItem $HOME\*.ps1 -Recurse |
Copy-Item -Destination "\\Server\Share\PSScriptArchive"
}
Register-ScheduledJob
använder parametern Namn för att skapa det Archive-Scripts
schemalagda jobbet.
Parametern ScriptBlock körs Get-ChildItem
som söker $HOME
i katalogen rekursivt efter .ps1
filer. Cmdleten Copy-Item
kopierar filerna till en katalog som anges av målparametern.
Eftersom det schemalagda jobbet inte innehåller någon utlösare startas det inte automatiskt. Du kan lägga till jobbutlösare med Add-JobTrigger
, använda cmdleten Start-Job
för att starta jobbet på begäran eller använda det schemalagda jobbet som mall för andra schemalagda jobb.
Exempel 2: Skapa ett schemalagt jobb med utlösare och anpassade alternativ
Det här exemplet visar hur du skapar ett schemalagt jobb som har en jobbutlösare och anpassade jobbalternativ.
$O = New-ScheduledJobOption -WakeToRun -StartIfIdle -MultipleInstancePolicy Queue
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
$path = "\\Srv01\Scripts\UpdateVersion.ps1"
Register-ScheduledJob -Name "UpdateVersion" -FilePath $path -ScheduledJobOption $O -Trigger $T
Variabeln $O
lagrar jobbalternativobjektet som cmdleten New-ScheduledJobOption
skapade. Alternativen startar det schemalagda jobbet även om datorn inte är inaktiv, aktiverar datorn för att köra jobbet om det behövs och tillåter att flera instanser av jobbet körs i en serie.
Variabeln $T
lagrar resultatet från cmdleten New-JobTrigger
för att skapa jobbutlösare som startar ett jobb varannan måndag kl. 21:00.
Variabeln $path
lagrar sökvägen till UpdateVersion.ps1
skriptfilen.
Register-ScheduledJob
använder parametern Namn för att skapa det schemalagda jobbet UpdateVersion .
Parametern FilePath använder $path
för att ange det skript som jobbet kör. Parametern ScheduledJobOption använder jobbalternativen som lagras i $O
. Parametern Trigger använder jobbutlösare som lagras i $T
.
Exempel 3: Använd hash-tabeller för att ange en utlösare och schemalagda jobbalternativ
Det här exemplet har samma effekt som kommandot i Exempel 2. Det skapar ett schemalagt jobb med hjälp av hash-tabeller för att ange värdena för parametrarna Trigger och ScheduledJobOption . Variablerna $O
och $T
som definieras i exempel 2 ersätts med hash-tabeller.
$T = @{
Frequency="Weekly"
At="9:00PM"
DaysOfWeek="Monday"
Interval=2
}
$O = @{
WakeToRun=$true
StartIfNotIdle=$false
MultipleInstancePolicy="Queue"
}
Register-ScheduledJob -Trigger $T -ScheduledJobOption $O -Name UpdateVersion -FilePath "\\Srv01\Scripts\Update-Version.ps1"
Exempel 4: Skapa schemalagda jobb på fjärrdatorer
I det här exemplet skapas det schemalagda Jobbet EnergyData på flera fjärrdatorer. Det schemalagda jobbet kör ett skript som samlar in rådata och sparar dem i en logg som körs på fjärrdatorn.
$Cred = Get-Credential
$O = New-ScheduledJobOption -WakeToRun -StartIfIdle -MultipleInstancePolicy Queue
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
Invoke-Command -ComputerName (Get-Content Servers.txt) -Credential $Cred -ScriptBlock {
$params = @{
Name = "Get-EnergyData"
FilePath = "\\Srv01\Scripts\Get-EnergyData.ps1"
ScheduledJobOption = $using:O
Trigger = $using:T
}
Register-ScheduledJob @params
}
Variabeln $Cred
lagrar autentiseringsuppgifter i ett PSCredential-objekt för en användare med behörighet att skapa schemalagda jobb. Variabeln $O
lagrar jobbalternativen som skapats med New-ScheduledJobOption
. Variabeln $T
lagrar jobbutlösare som skapats med New-JobTrigger
.
Cmdleten Invoke-Command
använder parametern ComputerName för att hämta en lista över servernamn från Servers.txt
filen. Parametern Credential hämtar autentiseringsobjektet som lagras i $Cred
.
Parametern ScriptBlock kör ett Register-ScheduledJob
kommando på datorerna Servers.txt
i filen.
Parametrarna för Register-ScheduledJob
definieras av $params
. Namnparametrarna anger att jobbet namnges Get-EnergyData
på varje fjärrdator. FilePath tillhandahåller platsen för skriptet EnergyData.ps1
. Skriptet finns på en filserver som är tillgänglig för alla deltagande datorer. Jobbet körs enligt det schema som anges av jobbutlösarna i $T
och jobbalternativen i $O
.
Kommandot Register-ScheduledJob @params
skapar det schemalagda jobbet med parametrarna från skriptblocket.
Exempel 5: Skapa ett schemalagt jobb som kör ett skript på fjärrdatorer
I det här exemplet skapas det schemalagda jobbet CollectEnergyData på den lokala datorn. Jobbet körs på flera fjärrdatorer.
$Admin = Get-Credential
$T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2
Register-ScheduledJob -Name "CollectEnergyData" -Trigger $T -MaxResultCount 99 -ScriptBlock {
$params = @{
AsJob = $true
ComputerName = (Get-Content Servers.txt)
FilePath = '\\Srv01\Scripts\Get-EnergyData.ps1'
Credential = $using:Admin
Authentication = 'CredSSP'
}
Invoke-Command @params
}
Variabeln $Admin
lagrar autentiseringsuppgifter för en användare med behörighet att köra kommandona i ett PSCredential-objekt . Variabeln $T
lagrar jobbutlösare som skapats med New-JobTrigger
.
Cmdleten Register-ScheduledJob
använder parametern Namn för att skapa det schemalagda jobbet CollectEnergyData på den lokala datorn. Parametern Trigger anger jobbutlösarna i $T
och parametern MaxResultCount ökar antalet sparade resultat till 99.
Parametern ScriptBlock definierar parametrarna Invoke-Command
med $params
. Parametern AsJob skapar bakgrundsjobbobjektet på den lokala datorn, även om skriptet Energydata.ps1
körs på fjärrdatorerna. Parametern ComputerName hämtar en lista över servernamn från Servers.txt
filen. Parametern Credential anger ett användarkonto som har behörighet att köra skript på fjärrdatorerna. Och parametern Autentisering anger ett värde för CredSSP för att tillåta delegerade autentiseringsuppgifter.
Kör Invoke-Command @params
kommandot med parametrarna från skriptblocket.
Parametrar
-ArgumentList
Anger värden för parametrarna för skriptet som anges av FilePath-parametern eller för kommandot som anges av parametern ScriptBlock .
Typ: | Object[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Authentication
Anger den mekanism som används för att autentisera användarens autentiseringsuppgifter. Standardvärdet är Standard.
De acceptabla värdena för den här parametern är:
Default
Basic
Credssp
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
Mer information om värdena för den här parametern finns i AuthenticationMechanism.
Varning
CredSSP-autentisering (CredSSP), där användarens autentiseringsuppgifter skickas till en fjärrdator som ska autentiseras, är utformad för kommandon som kräver autentisering på mer än en resurs, till exempel åtkomst till en fjärrnätverksresurs. Den här mekanismen ökar säkerhetsrisken för fjärråtgärden. Om fjärrdatorn komprometteras kan de autentiseringsuppgifter som skickas till den användas för att styra nätverkssessionen.
Typ: | AuthenticationMechanism |
Godkända värden: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Typ: | SwitchParameter |
Alias: | cf |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Credential
Anger ett användarkonto som har behörighet att köra det schemalagda jobbet. Standard är den aktuella användaren.
Ange ett användarnamn, till exempel User01 eller Domain01\User01, eller ange ett PSCredential-objekt, till exempel ett från cmdleten Get-Credential
. Om du bara anger ett användarnamn uppmanas du att ange ett lösenord.
Autentiseringsuppgifter lagras i ett PSCredential-objekt och lösenordet lagras som en SecureString.
Kommentar
Mer information om SecureString-dataskydd finns i Hur säker är SecureString?.
Typ: | PSCredential |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-FilePath
Anger ett skript som det schemalagda jobbet körs på. Ange sökvägen till en .ps1
fil på den lokala datorn. Om du vill ange standardvärden för skriptparametrarna använder du parametern ArgumentList .
Varje Register-ScheduledJob
kommando måste använda parametrarna ScriptBlock eller FilePath .
Typ: | String |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-InitializationScript
Anger den fullständigt kvalificerade sökvägen till ett Windows PowerShell-skript (.ps1
). Initieringsskriptet körs i sessionen som skapas för bakgrundsjobbet före de kommandon som anges av parametern ScriptBlock eller skriptet som anges av Parametern FilePath . Du kan använda initieringsskriptet för att konfigurera sessionen, till exempel lägga till filer, funktioner eller alias, skapa kataloger eller söka efter förutsättningar.
Om du vill ange ett skript som kör de primära jobbkommandona använder du parametern FilePath .
Om initieringsskriptet genererar ett fel, även ett icke-avslutande fel, körs inte den aktuella instansen av det schemalagda jobbet och dess status är Misslyckad.
Typ: | ScriptBlock |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-MaxResultCount
Anger hur många jobbresultatposter som underhålls för det schemalagda jobbet. Standardvärdet är 32.
Windows PowerShell sparar körningshistoriken och resultaten för varje utlöst instans av det schemalagda jobbet på disken. Värdet för den här parametern avgör antalet jobbinstansresultat som sparas för det här schemalagda jobbet. När antalet jobbinstansresultat överskrider det här värdet tar Windows PowerShell bort resultatet från den äldsta jobbinstansen för att göra plats för resultatet av den senaste jobbinstansen.
Jobbkörningshistoriken och jobbresultatet sparas i $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp>
kataloger på den dator där jobbet skapas. Om du vill se körningshistoriken använder du cmdleten Get-Job
. Använd cmdleten för att hämta jobbresultatet Receive-Job
.
Parametern MaxResultCount anger värdet för egenskapen ExecutionHistoryLength för det schemalagda jobbet.
Om du vill ta bort den aktuella körningshistoriken och jobbresultaten använder du parametern ClearExecutionHistory för cmdleten Set-ScheduledJob
.
Typ: | Int32 |
Position: | Named |
Standardvärde: | 32 |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Name
Anger ett namn för det schemalagda jobbet. Namnet används också för alla startade instanser av det schemalagda jobbet. Namnet måste vara unikt på datorn. Den här parametern krävs.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-RunAs32
Kör det schemalagda jobbet i en 32-bitarsprocess.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-RunEvery
Används för att ange hur ofta jobbet ska köras. Använd till exempel det här alternativet för att köra ett jobb var 15:e minut.
Typ: | TimeSpan |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-RunNow
Startar ett jobb omedelbart så snart cmdleten Register-ScheduledJob
körs. Den här parametern eliminerar behovet av att utlösa Schemaläggaren för att köra ett Windows PowerShell-skript omedelbart efter registreringen och kräver inte att användarna skapar en utlösare som anger ett startdatum och en starttid.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-ScheduledJobOption
Anger alternativ för det schemalagda jobbet. Ange ett ScheduledJobOptions-objekt , till exempel ett objekt som du skapar med hjälp av cmdleten New-ScheduledJobOption
eller ett hash-tabellvärde.
Du kan ange alternativ för ett schemalagt jobb när du registrerar schemajobbet eller använder Set-ScheduledJobOption
cmdletarna eller Set-ScheduledJob
för att ändra alternativen.
Många av alternativen och deras standardvärden avgör om och när ett schemalagt jobb körs. Se till att granska de här alternativen innan du schemalägger ett jobb. En beskrivning av de schemalagda jobbalternativen, inklusive standardvärdena, finns i New-ScheduledJobOption
.
Om du vill skicka en hash-tabell använder du följande nycklar. I följande hash-tabell visas nycklarna med sina standardvärden.
@{StartIfOnBattery=$False; StopIfGoingOnBattery=$True; WakeToRun=$False; StartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False; ShowInTaskScheduler=$True; RunElevated=$False; RunWithoutNetwork=$False; DoNotAllowDemandStart=$False; MultipleInstancePolicy="IgnoreNew"}
Typ: | ScheduledJobOptions |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-ScriptBlock
Anger de kommandon som det schemalagda jobbet körs på. Omslut kommandona i klammerparenteser ({}
) för att skapa ett skriptblock. Om du vill ange standardvärden för kommandoparametrar använder du parametern ArgumentList .
Varje Register-ScheduledJob
kommando måste använda parametrarna ScriptBlock eller FilePath .
Typ: | ScriptBlock |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Trigger
Anger utlösarna för det schemalagda jobbet. Ange ett eller flera ScheduledJobTrigger-objekt , till exempel de objekt som cmdleten New-JobTrigger
returnerar, eller en hash-tabell med jobbutlösarnycklar och värden.
En jobbutlösare startar schemajobbet. Utlösaren kan ange en engångs- eller återkommande schemalagd eller en händelse, till exempel när en användare loggar in eller Windows startar.
Utlösarparametern är valfri. Du kan lägga till en utlösare när du skapar det schemalagda jobbet, använda Add-JobTrigger
cmdletarna , Set-JobTrigger
eller Set-ScheduledJob
för att lägga till eller ändra jobbutlösare senare eller använda cmdleten Start-Job
för att starta det schemalagda jobbet omedelbart. Du kan också skapa och underhålla ett schemalagt jobb utan en utlösare som används som mall.
Om du vill skicka en hash-tabell använder du följande nycklar:
- Frekvens: Dagligen, Varje vecka, AtStartup, AtLogon
- Vid: Valfri giltig tidssträng
- DaysOfWeek – Valfri kombination av dagnamn
- Intervall – valfritt giltigt frekvensintervall
- RandomDelay: Alla giltiga tidsintervallsträngar
- Användare: Alla giltiga användare. Används endast med AtLogon-frekvensvärdet
Till exempel:
@{Frequency="Once"; At="3am"; DaysOfWeek="Monday", "Wednesday"; Interval=2; RandomDelay="30minutes"; User="Domain1\User01"}
Typ: | ScheduledJobTrigger[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-WhatIf
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
Typ: | SwitchParameter |
Alias: | wi |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
None
Du kan inte skicka objekt till den här cmdleten.
Utdata
Den här cmdleten returnerar ett ScheduledJobDefinition-objekt som representerar det registrerade jobbet.
Kommentarer
Varje schemalagt jobb sparas i en underkatalog till $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
katalogen på den lokala datorn.
Underkatalogen namnges för det schemalagda jobbet och innehåller en XML-fil för det schemalagda jobbet och poster i dess körningshistorik. Mer information om schemalagda jobb på disk finns i about_Scheduled_Jobs_Advanced.
Schemalagda jobb som du skapar i Windows PowerShell visas i Schemaläggaren i mappen Schemaläggare Library\Microsoft\Windows\PowerShell\ScheduledJobs
. Du kan använda Schemaläggaren för att visa och redigera det schemalagda jobbet.
Du kan använda Schemaläggaren, schtasks.exe
kommandoradsverktyget och cmdletarna Schemaläggare för att hantera schemalagda jobb som du skapar med cmdletarna Schemalagt jobb. Du kan dock inte använda cmdletar för schemalagt jobb för att hantera aktiviteter som du skapar i Schemaläggaren.
Om ett schemalagt jobbkommando misslyckas returnerar Windows PowerShell ett felmeddelande. Men om jobbet misslyckas när Schemaläggaren försöker köra det är felet inte tillgängligt för Windows PowerShell.
Om ett schemalagt jobb inte körs använder du följande metoder för att hitta orsaken:
- Kontrollera att jobbutlösaren har angetts korrekt.
- Kontrollera att de villkor som anges i jobbalternativen är uppfyllda.
- Kontrollera att användarkontot som jobbet körs under har behörighet att köra kommandona eller skripten i jobbet.
- Kontrollera historiken för Schemaläggaren efter fel.
- Kontrollera händelseloggen för Schemaläggaren om det finns fel.
Mer information finns i about_Scheduled_Jobs_Troubleshooting.
Relaterade länkar
- Add-JobTrigger
- Disable-JobTrigger
- Disable-ScheduledJob
- Enable-JobTrigger
- Enable-ScheduledJob
- Get-JobTrigger
- Get-ScheduledJob
- Get-ScheduledJobOption
- New-JobTrigger
- New-ScheduledJobOption
- Register-ScheduledJob
- Remove-JobTrigger
- Set-JobTrigger
- Set-ScheduledJob
- Set-ScheduledJobOption
- Unregister-ScheduledJob