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 prostředí Windows PowerShell na pozadí, která se dá spustit automaticky podle jednorázového nebo opakovaného plánu. Naplánované úlohy se ukládají na disk a registrují se v Plánovači úloh. Úlohy je možné spravovat v Plánovači úloh nebo pomocí rutin naplánované úlohy ve Windows PowerShellu.

Když se naplánovaná úloha spustí, vytvoří instanci naplánované úlohy. Instance naplánovaných úloh jsou shodné s úlohami prostředí Windows PowerShell na pozadí s tím rozdílem, že výsledky se ukládají na disk. Použijte rutiny Úlohy, jako Start-Jobje například , Get-Joba Receive-Job spusťte, zobrazte a získejte výsledky instancí úloh.

Slouží Register-ScheduledJob k vytvoření nové naplánované úlohy. Chcete-li zadat příkazy, které naplánovaná úloha běží, použijte parametr ScriptBlock . Chcete-li zadat skript, který úloha spustí, použijte parametr FilePath .

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

Parametr Trigger pro přidání jedné nebo více aktivačních Register-ScheduledJob 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 , který spustí úlohu okamžitě, použít Start-Job rutinu k okamžitému spuštění úlohy 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 Možnosti je 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 PowerShellu.

Další informace o naplánovaných úlohách naleznete v článku o článcích v modulu PSScheduledJob . Naimportujte modul PSScheduledJob a zadejte: Get-Help about_Scheduled* nebo se podívejte na about_Scheduled_Jobs.

Tato rutina byla zavedena ve Windows PowerShellu 3.0.

Příklady

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

Tento příklad vytvoří naplánovanou úlohu na místním počítači.

Register-ScheduledJob -Name "Archive-Scripts" -ScriptBlock {
  Get-ChildItem $HOME\*.ps1 -Recurse |
    Copy-Item -Destination "\\Server\Share\PSScriptArchive"
}

Register-ScheduledJob pomocí parametru Name vytvoří naplánovanou Archive-Scripts úlohu. Parametr ScriptBlock se spustíGet-ChildItem, který rekurzivně .ps1 vyhledá soubory v $HOME adresáři. Rutina Copy-Item zkopíruje soubory do adresáře určeného parametrem Destination .

Vzhledem k tomu, že naplánovaná úloha neobsahuje aktivační událost, není spuštěna automaticky. Triggery úloh můžete přidat pomocí Add-JobTriggerrutiny Start-Job ke spuštění úlohy 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

Tento příklad ukazuje, jak vytvořit naplánovanou úlohu s triggerem úlohy a vlastními možnostmi úlohy.

$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

Proměnná $O ukládá objekt možnosti úlohy, který vytvořila rutina New-ScheduledJobOption . Možnosti spustí naplánovanou úlohu i v případě, že počítač není nečinný, probudí počítač, aby v případě potřeby spustil úlohu a umožňuje spuštění více instancí úlohy v řadě.

Proměnná $T ukládá výsledek z rutiny k vytvoření triggeru New-JobTrigger úlohy, která spustí úlohu každé druhé pondělí v 9:00.

Proměnná $path ukládá cestu k UpdateVersion.ps1 souboru skriptu.

Register-ScheduledJobpoužívá parametr Name k vytvoření naplánované úlohy UpdateVersion. Parametr FilePath používá $path k určení skriptu, který úloha spouští. Parametr ScheduledJobOption používá možnosti úlohy uložené v $O. Parametr Trigger používá triggery úlohy uložené v $T.

Příklad 3: Použití hashovacích tabulek k určení možností triggeru a naplánované úlohy

Tento příklad má stejný účinek jako příkaz v příkladu 2. Vytvoří naplánovanou úlohu pomocí tabulek hash k zadání hodnot parametrů Trigger a ScheduledJobOption . $TProměnné $O definované v příkladu 2 se nahradí tabulkami hash.

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

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

V tomto příkladu je naplánovaná úloha EnergyData vytvořena 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 na vzdáleném počítači.

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

Proměnná $Cred ukládá přihlašovací údaje do objektu PSCredential pro uživatele s oprávněními k vytváření naplánovaných úloh. Proměnná $O ukládá možnosti úlohy vytvořené pomocí New-ScheduledJobOption. Proměnná $T ukládá triggery úlohy vytvořené pomocí New-JobTrigger.

Rutina Invoke-Command pomocí parametru ComputerName získá ze souboru seznam názvů Servers.txt serverů. Parametr Credential získá objekt přihlašovacích údajů uložený v $Cred. Parametr ScriptBlock spustí Register-ScheduledJob příkaz na počítačích v Servers.txt souboru.

Parametry jsou Register-ScheduledJob definovány parametrem $params. Parametry názvu určují, že úloha je pojmenována Get-EnergyData na každém vzdáleném počítači. FilePath poskytuje umístění EnergyData.ps1 skriptu. Skript se nachází na souborovém serveru, který je k dispozici pro všechny zúčastněné počítače. Úloha se spouští podle plánu určeného aktivačními událostmi $T úlohy a možnostmi úlohy v $O.

Příkaz Register-ScheduledJob @params vytvoří naplánovanou úlohu s parametry z bloku skriptu.

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

Tento příklad vytvoří naplánovanou úlohu CollectEnergyData v místním počítači. Úloha běží na více vzdálených počítačích.

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

Proměnná $Admin ukládá přihlašovací údaje pro uživatele s oprávněními ke spuštění příkazů v objektu PSCredential . Proměnná $T ukládá triggery úlohy vytvořené pomocí New-JobTrigger.

Rutina Register-ScheduledJob pomocí parametru Name vytvoří naplánovanou úlohu CollectEnergyData na místním počítači. Parametr Trigger určuje triggery úlohy v $T a MaxResultCount parametr zvyšuje počet uložených výsledků na 99.

Parametr ScriptBlock definuje Invoke-Command parametry pomocí $params. Parametr AsJob vytvoří objekt úlohy na pozadí v místním počítači, i když Energydata.ps1 skript běží na vzdálených počítačích. Parametr ComputerName získá ze souboru seznam názvů Servers.txt serverů. Parametr Credential určuje uživatelský účet, který má oprávnění ke spouštění skriptů na vzdálených počítačích. A parametr Ověřování určuje hodnotu CredSSP, která povolí delegované přihlašovací údaje.

Spustí Invoke-Command @params příkaz s parametry z bloku skriptu.

Parametry

-ArgumentList

Určuje hodnoty pro parametry skriptu určené parametrem FilePath nebo pro příkaz určený 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. Výchozí hodnota je Default.

Tento parametr přijímá tyto hodnoty:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Další informace o hodnotách tohoto parametru naleznete v tématu AuthenticationMechanism.

Upozornění

Ověřování zprostředkovatele služby CredSSP (Credential Security Service Provider), 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, například pro 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 k řízení síťové relace použít přihlašovací údaje, které jsou mu předány.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
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 objekt z rutinyGet-Credential. Pokud zadáte jenom uživatelské jméno, zobrazí se výzva k zadání hesla.

Přihlašovací údaje jsou uloženy v objektu PSCredential a heslo je uloženo jako SecureString.

Poznámka:

Další informace o ochraně dat SecureString naleznete v tématu Jak zabezpečený je SecureString?.

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

-FilePath

Určuje skript, který bude naplánovaná úloha spouštět. Zadejte cestu k .ps1 souboru v místním počítači. Chcete-li zadat výchozí hodnoty parametrů skriptu, použijte parametr ArgumentList . Každý Register-ScheduledJob příkaz 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 Prostředí Windows PowerShell (.ps1). Inicializační skript se spustí v relaci, která je vytvořena pro úlohu na pozadí před příkazy určené parametrem ScriptBlock nebo skriptem určeným parametrem FilePath . Inicializační skript můžete použít ke konfiguraci relace, jako je přidání souborů, funkcí nebo aliasů, vytváření adresářů nebo kontrola požadavků.

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

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

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 ukládá historii spouš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 uvolnily místo pro výsledky nejnovější instance úlohy.

Historie provádění úlohy a výsledky úloh se ukládají do $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> adresáře v počítači, na kterém je úloha vytvořena. Pokud chcete zobrazit historii provádění, použijte rutinu Get-Job . K získání výsledků úlohy použijte rutinu Receive-Job .

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

Pokud chcete odstranit aktuální historii spuš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:None
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 rutina Register-ScheduledJob spustí. Tento parametr eliminuje nutnost aktivovat Plánovač úloh pro spuštění skriptu Prostředí 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:None
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í rutinyNew-ScheduledJobOption, nebo hodnotu hash tabulky.

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

Mnoho možností a jejich výchozích hodnot určuje, jestli a kdy je naplánovaná úloha spuštěná. 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.

K odeslání hashovací tabulky použijte následující klíče. V následující tabulce hash se klíče zobrazují s 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:Microsoft.PowerShell.ScheduledJob.ScheduledJobOptions
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

Určuje příkazy, které se naplánovaná úloha spustí. Uzavřete příkazy do složených závorek ({}) a vytvořte blok skriptu. Chcete-li zadat výchozí hodnoty parametrů příkazu, použijte parametr ArgumentList .

Každý Register-ScheduledJob příkaz 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 aktivační události 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 triggerů úlohy.

Aktivační událost úlohy spustí úlohu plánu. Trigger může zadat jednorázovou nebo opakovanou naplánovanou událost nebo událost, například při spuštění uživatele nebo spuštění Systému Windows.

Parametr Trigger je volitelný. Trigger můžete přidat při vytváření naplánované úlohy, pomocí Add-JobTriggerSet-JobTriggerrutin nebo Set-ScheduledJob rutin přidat nebo změnit aktivační události úlohy později, nebo pomocí Start-Job rutiny 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.

K odeslání hashovací tabulky použijte následující klíče:

  • Frekvence: Denně, Týdně, AtStartup, AtLogon
  • At: Libovolný platný řetězec času
  • DaysOfWeek – libovolná kombinace názvů dnů
  • Interval – libovolný platný interval četnosti
  • RandomDelay: Libovolný platný řetězec časového rozsahu
  • Uživatel: Libovolný platný uživatel. Používá se pouze s hodnotou frekvence AtLogon.

Příklad:

@{Frequency="Once"; At="3am"; DaysOfWeek="Monday", "Wednesday"; Interval=2; RandomDelay="30minutes"; User="Domain1\User01"}

Type:Microsoft.PowerShell.ScheduledJob.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 se nespustí.

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

Vstupy

None

Do této rutiny nemůžete roušit objekty.

Výstupy

Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Tato rutina vrátí objekt ScheduledJobDefinition představující zaregistrovanou úlohu.

Poznámky

Každá naplánovaná úloha se uloží do podadresáře $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs adresáře 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 ve Windows PowerShellu, se zobrazí v Plánovači úloh ve složce Plánovač Library\Microsoft\Windows\PowerShell\ScheduledJobs úloh. Plánovač úloh můžete použít k zobrazení a úpravě naplánované úlohy.

Pomocí plánovače úloh, nástroje příkazového schtasks.exe řádku 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 se ale úloha nezdaří, když se plánovač úloh pokusí spustit, není tato chyba dostupná pro Windows PowerShell.

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

  • 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 spouštění příkazů nebo skriptů v úloze.
  • Zkontrolujte chyby 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.