Dela via


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å disk och registreras i Schemaläggaren, så att de 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-cmdletar, 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 vilka kommandon som det schemalagda jobbet ska köra 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ösarparameternför Register-ScheduledJob 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 direkt 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 också 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 kan du granska jobbalternativen och ange 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 ämnen i modulen PSScheduledJob. Importera PSScheduledJob-modulen och skriv sedan: Get-Help about_Scheduled* eller se about_Scheduled_Jobs.

Denna cmdlet introducerades i Windows PowerShell 3.0.

Exempel

Exempel 1: Skapa ett schemalagt jobb

PS C:\> Register-ScheduledJob -Name "Archive-Scripts" -ScriptBlock { dir $home\*.ps1 -Recurse | Copy-Item -Destination "\\Server\Share\PSScriptArchive" }

Det här kommandot skapar det Archive-Scripts schemalagda jobbet. Parametervärdet ScriptBlock innehåller ett kommando som rekursivt söker i katalogen $home efter .ps1 filer och kopierar dem till en katalog i en filresurs.

Eftersom det schemalagda jobbet inte innehåller någon utlösare startas det inte automatiskt. Du kan använda lägg till jobbutlösare senare, använda cmdleten Start-Job för att starta jobbet på begäran eller använda det schemalagda jobbet som en mall för andra schemalagda jobb.

Exempel 2: Skapa ett schemalagt jobb med utlösare och anpassade alternativ

The first command uses the New-ScheduledJobOption cmdlet to create a job option object, which it saves in the $O parameter. The options start the scheduled job even if the computer is not idle, wake the computer to run the job, if necessary, and allows multiple instances of the job to run in a series.
PS C:\> $O = New-ScheduledJobOption -WakeToRun -StartIfNotIdle -MultipleInstancesPolicy Queue


The second command uses the New-JobTrigger cmdlet to create job trigger that starts a job every other Monday at 9:00 PM.
PS C:\> $T = New-JobTrigger -Weekly -At "9:00 PM" -DaysOfWeek Monday -WeeksInterval 2

This command creates the UpdateVersion scheduled job, which runs the UpdateVersion.ps1 script every Monday at 9:00 p.m. The command uses the *FilePath* parameter to specify the script that the job runs. It uses the *Trigger* parameter to specify the job triggers in the $T variable and the *ScheduledJobOption* parameter to specify the option object in the $O variable.
PS C:\> Register-ScheduledJob -Name "UpdateVersion" -FilePath "\\Srv01\Scripts\UpdateVersion.ps1" -Trigger $T -ScheduledJobOption $O

Det här exemplet visar hur du skapar ett schemalagt jobb som har en jobbutlösare och anpassade jobbalternativ.

Exempel 3: Använd hash-tabeller för att ange alternativ för utlösare och jobb

PS C:\> Register-ScheduledJob -FilePath "\\Srv01\Scripts\Update-Version.ps1" -Trigger @{Frequency=Weekly; At="9:00PM"; DaysOfWeek="Monday"; Interval=2} -ScheduledJobOption @{WakeToRun; StartIfNotIdle; MultipleInstancesPolicy="Queue"}

Det här kommandot har samma effekt som kommandot i exempel 2. Det skapar ett schemalagt jobb, men använder hash-tabeller för att ange värdena för parametrarna Trigger och ScheduledJobOption .

Exempel 4: Skapa schemalagda jobb på fjärrdatorer

PS C:\> Invoke-Command -ComputerName (Get-Content Servers.txt) -ScriptBlock {Register-ScheduledJob -Name "Get-EnergyData" -FilePath "\\Srv01\Scripts\Get-EnergyData.ps1" -ScheduledJobOption $O -Trigger $T } -Credential $Cred

Det här kommandot skapar det schemalagda EnergyData-jobbet 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. De schemalagda jobben skapas på fjärrdatorn, körs på fjärrdatorn och lagrar resultaten på fjärrdatorn.

Kommandot använder cmdleten Invoke-Command för att köra kommandot Register-ScheduledJob på datorerna i Servers.txt-filen. Kommandot Invoke-Command använder parametern Credential för att ange autentiseringsuppgifterna för en användare som har behörighet att skapa schemalagda jobb på datorerna i Servers.txt filen.

Kommandot Register-ScheduledJob skapar ett schemalagt jobb på fjärrdatorn som kör skriptet EnergyData.ps1 på det schemalagda som anges av jobbutlösaren i variabeln $T. Skriptet finns på en filserver som är tillgänglig för alla deltagande datorer.

Exempel 5: Skapa ett schemalagt jobb som kör ett skript på fjärrdatorer

PS C:\> Register-ScheduledJob -Name "CollectEnergyData" -Trigger $T -MaxResultCount 99 -ScriptBlock { Invoke-Command -AsJob -ComputerName (Servers.txt) -FilePath "\\Srv01\Scripts\Get-EnergyData.ps1" -Credential $Admin -Authentication CredSSP }

Det här kommandot använder cmdleten Register-ScheduledJob för att skapa det schemalagda jobbet CollectEnergyData på den lokala datorn. Kommandot använder parametern Trigger för att ange jobbschemat och parametern MaxResultCount för att öka antalet sparade resultat till 99.

CollectEnergyData-jobbet använder cmdleten Invoke-Command för att köra EnergyData.ps1-skriptet som bakgrund på de datorer som anges i Servers.txt-filen. Kommandot Invoke-Command använder asjob-parametern för att skapa bakgrundsjobbobjektet på den lokala datorn, även om Energydata.ps1 skriptet körs på fjärrdatorerna. Kommandot använder parametern Credential för att ange ett användarkonto som har behörighet att köra skript på fjärrdatorerna och parametern Autentisering med värdet CredSSP för att tillåta delegerade autentiseringsuppgifter.

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 .

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Anger den mekanism som används för att autentisera användarens autentiseringsuppgifter. De acceptabla värdena för den här parametern är:

  • Standardvärde
  • Basic
  • Credssp
  • Sammandrag
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Standardvärdet är Standard. Mer information om värdena för den här parametern finns i AuthenticationMechanism Enumeration i MSDN-biblioteket.

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å fler ä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.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters: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 .

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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 FilePath-parametern . 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 krav.

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.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 jobbresultaten sparas i $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp-katalogerna> på den dator där jobbet skapas. Om du vill se körningshistoriken använder du cmdleten Get-Job. Använd cmdleten Receive-Job för att hämta jobbresultatet.

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.

Type:Int32
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-RunAs32

Kör det schemalagda jobbet i en 32-bitarsprocess.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 direkt efter registreringen och kräver inte att användarna skapar en utlösare som anger ett startdatum och en starttid.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 cmdletarna Set-ScheduledJobOption 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 alternativen för schemalagt jobb, 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}

Type:ScheduledJobOptions
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 .

Type:ScriptBlock
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Trigger

Anger utlösare för det schemalagda jobbet. Ange ett eller flera ScheduledJobTrigger-objekt , till exempel de objekt som New-JobTrigger cmdlet returnerar, eller en hash-tabell med jobbutlösarnycklar och värden.

En jobbutlösare startar schemajobbet. Utlösaren kan ange en schemalagd engångshändelse eller återkommande eller en händelse, till exempel när en användare loggar in eller Windows startar.

Parametern Utlösare är valfri. Du kan lägga till en utlösare när du skapar det schemalagda jobbet, använda Add-JobTrigger, Set-JobTrigger eller Set-ScheduledJob cmdlets 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:

@{Frequency="Once" (eller Varje dag, Varje vecka, AtStartup, AtLogon); At="3am" (eller någon giltig tidssträng); DaysOfWeek="Monday", "Wednesday" (eller någon kombination av dagnamn); Interval=2 (eller något giltigt frekvensintervall); RandomDelay="30minutes" (eller någon giltig tidsintervallsträng); User="Domain1\User01" (eller en giltig användare; används endast med AtLogon-frekvensvärdet) }

Type:ScheduledJobTrigger[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Indata

None

Du kan inte skicka indata till denna cmdlet.

Utdata

ScheduledJobDefinition

Kommentarer

  • Varje schemalagt jobb sparas i en underkatalog i katalogen $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs på den lokala datorn. Underkatalogen namnges för det schemalagda jobbet och innehåller en XML-fil för det schemalagda jobbet och poster för 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äggarens bibliotek\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, kommandoradsverktyget SchTasks.exe och cmdletarna Schemaläggaren för att hantera schemalagda jobb som du skapar med cmdletar för schemalagt jobb. Du kan dock inte använda cmdletar för schemalagda 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 villkoren i jobbalternativen är uppfyllda.
  • Kontrollera att användarkontot som jobbet körs under har behörighet att köra kommandona eller skripten i jobbet.
  • Leta efter fel i Schemaläggarens historik
  • Leta efter fel i händelseloggen för Schemaläggaren.

Mer information finns i about_Scheduled_Jobs_Troubleshooting.