Register-ScheduledJob

Vytvoří naplánovanou úlohu.

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

Rutina Register-ScheduledJob vytvoří naplánované úlohy v místním počítači.

Naplánovaná úloha je úloha Windows PowerShell na pozadí, která se dá spustit automaticky podle jednorázového nebo opakovaného plánu. Naplánované úlohy jsou uložené na disku a zaregistrované v Plánovači úloh, takže je můžete spravovat v Plánovači úloh nebo pomocí rutin naplánované úlohy v Windows PowerShell.

Při spuštění naplánované úlohy se vytvoří instance naplánované úlohy. Instance naplánované úlohy jsou stejné jako Windows PowerShell úlohy na pozadí, s tím rozdílem, že výsledky se ukládají na disk. K spuštění, zobrazení a získání výsledků instancí úloh použijte rutiny Úlohy, jako jsou Start-Job, Get-Job a Receive-Job.

Pomocí úlohy Register-ScheduledJob vytvořte novou naplánovanou úlohu. Chcete-li určit příkazy, které naplánovaná úloha běží, použijte parametr ScriptBlock ; chcete-li zadat skript, který úloha spustí, použijte parametr FilePath .

Windows PowerShell naplánované úlohy používají stejné triggery úloh a možnosti úlohy, které plánovač úloh používá pro naplánované úkoly.

Parametr triggeruúlohy Register-ScheduledJob přidá jednu nebo více aktivačních událostí úlohy, které spustí úlohu. Parametr Trigger je volitelný, takže můžete přidat triggery při vytváření naplánované úlohy, přidat triggery úloh později, přidat parametr RunNow pro okamžité spuštění úlohy, použít Start-Job rutinu ke spuštění úlohy okamžitě nebo uložit neplánovanou naplánovanou úlohu jako šablonu pro jiné úlohy.

Parametr Možnosti umožňuje přizpůsobit nastavení možností pro naplánovanou úlohu. Parametr Options je také volitelný, takže můžete nastavit možnosti úlohy při vytváření naplánované úlohy nebo je kdykoli změnit. Vzhledem k tomu, že nastavení možností úlohy může zabránit spuštění naplánované úlohy, zkontrolujte možnosti úlohy a pečlivě je nastavte.

Register-ScheduledJob je jednou z kolekcí rutin plánování úloh v modulu PSScheduledJob, který je součástí Windows PowerShell.

Další informace o naplánovaných úlohách naleznete v tématu Témata v modulu PSScheduledJob. Naimportujte modul PSScheduledJob a zadejte: Get-Help about_Scheduled* nebo se podívejte na about_Scheduled_Jobs.

Tato rutina byla zavedena v Windows PowerShell 3.0.

Příklady

Příklad 1: Vytvoření naplánované úlohy

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

Tento příkaz vytvoří Archive-Scripts naplánovanou úlohu. Hodnota parametru ScriptBlock obsahuje příkaz, který rekurzivně prohledá $home adresář pro .ps1 soubory a zkopíruje je do adresáře ve sdílené složce.

Vzhledem k tomu, že naplánovaná úloha neobsahuje aktivační událost, není spuštěna automaticky. Triggery úlohy můžete přidat později, pomocí rutiny Start-Job spustit úlohu na vyžádání nebo použít naplánovanou úlohu jako šablonu pro jiné naplánované úlohy.

Příklad 2: Vytvoření naplánované úlohy s triggery a vlastními možnostmi

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

Tento příklad ukazuje, jak vytvořit naplánovanou úlohu, která má trigger úlohy a možnosti vlastní úlohy.

Příklad 3: Určení možností triggeru a úlohy pomocí tabulek hash

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"}

Tento příkaz má stejný účinek jako příkaz v příkladu 2. Vytvoří naplánovanou úlohu, ale pomocí tabulek hash určí hodnoty parametrů Trigger a ScheduledJobOption .

Příklad 4: Vytvoření naplánovaných úloh na vzdálených počítačích

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

Tento příkaz vytvoří naplánovanou úlohu EnergyData na více vzdálených počítačích. Naplánovaná úloha spustí skript, který shromažďuje nezpracovaná data a ukládá je do spuštěného protokolu. Naplánované úlohy se vytvářejí na vzdáleném počítači, běží na vzdáleném počítači a ukládají výsledky do vzdáleného počítače.

Příkaz používá rutinu Invoke-Command ke spuštění příkazu Register-ScheduledJob na počítačích v souboru Servers.txt. Příkaz Invoke-Command používá parametr Credential k zadání přihlašovacích údajů uživatele, který má oprávnění k vytváření naplánovaných úloh v počítačích v souboru Servers.txt.

Příkaz Register-ScheduledJob vytvoří na vzdáleném počítači naplánovanou úlohu, která spouští skript EnergyData.ps1 v naplánovaném zadaném triggeru úlohy v proměnné $T. Skript se nachází na souborovém serveru, který je k dispozici pro všechny zúčastněné počítače.

Příklad 5: Vytvoření naplánované úlohy, která spouští skript na vzdálených počítačích

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 }

Tento příkaz používá rutinu Register-ScheduledJob k vytvoření naplánované úlohy CollectEnergyData v místním počítači. Příkaz pomocí parametru Trigger určuje plán úlohy a parametr MaxResultCount ke zvýšení počtu uložených výsledků na 99.

Úloha CollectEnergyData používá rutinu Invoke-Command ke spuštění skriptu EnergyData.ps1 jako pozadí na počítačích uvedených v souboru Servers.txt. Příkaz Invoke-Command používá parametr AsJob k vytvoření objektu úlohy na pozadí v místním počítači, i když Energydata.ps1 skript běží na vzdálených počítačích. Příkaz používá parametr Credential k určení uživatelského účtu, který má oprávnění ke spouštění skriptů na vzdálených počítačích a parametr ověřování s hodnotou CredSSP pro povolení delegovaných přihlašovacích údajů.

Parametry

-ArgumentList

Určuje hodnoty parametrů skriptu určeného parametrem FilePath nebo příkazem určeným parametrem ScriptBlock .

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

-Authentication

Určuje mechanismus, který se používá k ověření přihlašovacích údajů uživatele. Tento parametr přijímá tyto hodnoty:

  • Výchozí
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Výchozí hodnota je Výchozí. Další informace o hodnotách tohoto parametru naleznete v tématu AuthenticationMechanism – výčet v knihovně MSDN.

Upozornění: Ověřování zprostředkovatele služby Credential Security Service Provider (CredSSP), ve kterém jsou přihlašovací údaje uživatele předány vzdálenému počítači, který se má ověřit, je určený pro příkazy, které vyžadují ověření u více než jednoho prostředku, jako je například přístup ke vzdálené síťové sdílené složce. Tento mechanismus zvyšuje riziko zabezpečení vzdálené operace. Pokud dojde k ohrožení zabezpečení vzdáleného počítače, dají se přihlašovací údaje předávané do něj použít k řízení síťové relace.

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

Před spuštěním rutiny zobrazí výzvu k potvrzení.

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

-Credential

Určuje uživatelský účet, který má oprávnění ke spuštění naplánované úlohy. Ve výchozím nastavení je to aktuální uživatel.

Zadejte uživatelské jméno, například User01 nebo Domain01\User01, nebo zadejte objekt PSCredential , například z rutiny Get-Credential. Pokud zadáte jenom uživatelské jméno, zobrazí se výzva k zadání hesla.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Určuje skript, který se spouští naplánovaná úloha. Zadejte cestu k souboru .ps1 v místním počítači. Pokud chcete zadat výchozí hodnoty parametrů skriptu, použijte parametr ArgumentList . Každý příkaz Register-ScheduledJob musí používat parametry ScriptBlock nebo FilePath .

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

-InitializationScript

Určuje plně kvalifikovanou cestu ke skriptu Windows PowerShell (.ps1). Inicializační skript se spustí v relaci, která se vytvoří pro úlohu na pozadí před příkazy, které jsou určené parametrem ScriptBlock nebo skriptem určeným parametrem FilePath . Skript inicializace můžete použít ke konfiguraci relace, jako je přidání souborů, funkcí nebo aliasů, vytváření adresářů nebo kontrola požadavků.

Pokud chcete zadat skript, který spouští příkazy primární úlohy, použijte parametr FilePath .

Pokud inicializační skript vygeneruje chybu (i neukončující chybu), aktuální instance naplánované úlohy se nespustí a její stav se nezdaří.

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

-MaxResultCount

Určuje, kolik položek výsledků úlohy se udržuje pro naplánovanou úlohu. Výchozí hodnota je 32.

Windows PowerShell uloží historii spuštění a výsledky každé aktivované instance naplánované úlohy na disku. Hodnota tohoto parametru určuje počet výsledků instance úlohy, které jsou uloženy pro tuto naplánovanou úlohu. Pokud počet výsledků instance úlohy překročí tuto hodnotu, Windows PowerShell odstraní výsledky nejstarší instance úlohy, aby se uvolnilo místo pro výsledky nejnovější instance úlohy.

Historie spuštění úlohy a výsledky úlohy se ukládají do $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> directories v počítači, na kterém je úloha vytvořena. Pokud chcete zobrazit historii spuštění, použijte rutinu Get-Job. Pokud chcete získat výsledky úlohy, použijte rutinu Receive-Job.

Parametr MaxResultCount nastaví hodnotu ExecutionHistoryLength vlastnosti naplánované úlohy.

Pokud chcete odstranit aktuální historii spouštění a výsledky úlohy, použijte parametr ClearExecutionHistory rutiny Set-ScheduledJob.

Type:Int32
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Určuje název naplánované úlohy. Název se používá také pro všechny spuštěné instance naplánované úlohy. Název musí být v počítači jedinečný. Tento parametr je povinný.

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

-RunAs32

Spustí naplánovanou úlohu v 32bitovém procesu.

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

-RunEvery

Slouží k určení, jak často se má úloha spouštět. Tuto možnost můžete například použít ke spuštění úlohy každých 15 minut.

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunNow

Spustí úlohu okamžitě, jakmile se spustí rutina Register-ScheduledJob . Tento parametr eliminuje nutnost aktivovat plánovač úloh, aby spustil skript Windows PowerShell ihned po registraci a nevyžaduje, aby uživatelé vytvořili trigger, který určuje počáteční datum a čas.

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

-ScheduledJobOption

Nastaví možnosti pro naplánovanou úlohu. Zadejte objekt ScheduledJobOptions , například objekt, který vytvoříte pomocí rutiny New-ScheduledJobOption nebo hodnoty hash tabulky.

Možnosti naplánované úlohy můžete nastavit při registraci úlohy plánu nebo pomocí rutin Set-ScheduledJobOption nebo Set-ScheduledJob změnit možnosti.

Řada možností a jejich výchozích hodnot určuje, jestli a kdy se naplánovaná úloha spustí. Před plánováním úlohy nezapomeňte tyto možnosti zkontrolovat. Popis možností naplánované úlohy, včetně výchozích hodnot, najdete v tématu New-ScheduledJobOption.

Pokud chcete odeslat tabulku hash, použijte následující klíče. V následující tabulce hash se klíče zobrazují s jejich výchozími hodnotami.

@{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

Určuje příkazy, které naplánovaná úloha běží. Uzavřete příkazy do závorek ( { } ) k vytvoření bloku skriptu. Pokud chcete zadat výchozí hodnoty parametrů příkazu, použijte parametr ArgumentList .

Každý příkaz Register-ScheduledJob musí používat parametry ScriptBlock nebo FilePath .

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

-Trigger

Určuje triggery pro naplánovanou úlohu. Zadejte jeden nebo více objektů ScheduledJobTrigger , například objekty, které rutina New-JobTrigger vrátí, nebo tabulku hash klíčů a hodnot aktivačních událostí úlohy.

Trigger úlohy spustí úlohu plánu. Trigger může zadat jednorázovou nebo opakovanou naplánovanou událost nebo událost, například když se uživatel přihlásí nebo spustí Windows.

Parametr triggeru je volitelný. Aktivační událost můžete přidat při vytváření naplánované úlohy, pomocí rutin Add-JobTrigger, Set-JobTrigger nebo Set-ScheduledJob přidat nebo změnit aktivační události úlohy později nebo pomocí rutiny Start-Job spustit naplánovanou úlohu okamžitě. Můžete také vytvořit a udržovat naplánovanou úlohu bez triggeru, který se používá jako šablona.

Pokud chcete odeslat tabulku hash, použijte následující klíče:

@{Frequency="Once" (nebo denně, týdně, AtStartup, AtLogon); At="3am" (nebo jakýkoli platný časový řetězec); DaysOfWeek="Monday", "Wednesday" (nebo libovolná kombinace jmen dnů); Interval=2 (nebo jakýkoli platný interval četnosti); RandomDelay="30minutes" (nebo jakýkoli platný řetězec časového rozsahu); User="Domain1\User01" (nebo jakýkoli platný uživatel; používá se pouze s hodnotou frekvence AtLogon) }

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

-WhatIf

Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.

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

Vstupy

None

Vstup do této rutiny nelze převést.

Výstupy

Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Poznámky

  • Každá naplánovaná úloha se uloží do podadresáře $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs v místním počítači. Podadresář má název pro naplánovanou úlohu a obsahuje soubor XML pro naplánovanou úlohu a záznamy historie spuštění. Další informace o naplánovaných úlohách na disku najdete v tématu about_Scheduled_Jobs_Advanced.

  • Naplánované úlohy, které vytvoříte v Windows PowerShell se zobrazí v Plánovači úloh ve složce Knihovna plánovače úloh\Microsoft\Windows\PowerShell\ScheduledJobs. Plánovač úloh můžete použít k zobrazení a úpravě naplánované úlohy.

  • Pomocí plánovače úloh, nástroje příkazového řádku SchTasks.exe a rutin plánovače úloh můžete spravovat naplánované úlohy, které vytvoříte pomocí rutin naplánované úlohy. Rutiny naplánované úlohy ale nemůžete použít ke správě úloh, které vytvoříte v Plánovači úloh.

  • Pokud příkaz naplánované úlohy selže, Windows PowerShell vrátí chybovou zprávu. Pokud však úloha selže, když se plánovač úloh pokusí spustit, tato chyba není k dispozici pro Windows PowerShell.

    Pokud se naplánovaná úloha nespustí, pomocí následujících metod vyhledejte důvod.

  • Ověřte, že je trigger úlohy správně nastavený. -- Ověřte, že jsou splněny podmínky nastavené v možnostech úlohy.
  • Ověřte, že uživatelský účet, pod kterým se úloha spouští, má oprávnění ke spuštění příkazů nebo skriptů v úloze.
  • Kontrola chyb v historii plánovače úloh
  • Zkontrolujte chyby v protokolu událostí Plánovače úloh.

Další informace najdete v tématu about_Scheduled_Jobs_Troubleshooting.