Úlohy na pozadí

Rutiny můžou provádět svoji akci interně nebo jako Windows PowerShell úlohy v popředí. Když se rutina spustí jako úloha na pozadí, práce se provádí asynchronně ve vlastním vlákně odděleném od vlákna kanálu, které rutina používá. Z pohledu uživatele se při spuštění rutiny jako úloha na pozadí příkazový řádek vrátí okamžitě, i když dokončení úlohy trvá delší dobu a uživatel může pokračovat bez přerušení během spuštění úlohy.

Úlohy na pozadí, podřízené úlohy a úložiště úloh

Objekt úlohy vrácený rutinami, které podporují úlohy na pozadí, definuje úlohu. (Rutina Start-Job vrátí také objekt úlohy.) Název úlohy, identifikátor, který slouží k určení úlohy, informace o stavu a podřízené úlohy jsou zahrnuty v této definici. Úloha neprovádí žádnou práci. Každá úloha na pozadí má alespoň jednu podřízenou úlohu, protože podřízená úloha provádí skutečnou práci. Když spustíte rutinu tak, aby se práce prováděla jako úloha na pozadí, musí rutina přidat úlohu a podřízené úlohy do společného úložiště označovaného jako úložiště úloh.

Další informace o tom, jak se úlohy na pozadí zpracovávají na příkazovém řádku, najdete v následujících tématech:

Zápis rutiny, která se spouští jako úloha na pozadí

Pokud chcete napsat rutinu, která se dá spustit jako úloha na pozadí, musíte provést následující úlohy:

  • AsJob [switch] Definujte parametr, aby se uživatel mohl rozhodnout, jestli má rutinu spustit jako úlohu na pozadí.

  • Vytvořte objekt, který je odvozen z třídy System.Management.Automation.Job. Tento objekt může být vlastní objekt úlohy nebo objekt úlohy poskytovaný Windows PowerShellem, například objektem System.Management.Automation.PSEventJob.

  • V metodě zpracování záznamů přidejte příkaz if, který zjistí, jestli má rutina běžet jako úloha na pozadí.

  • Pro vlastní objekty úloh implementujte třídu úlohy.

  • V závislosti na tom, jestli se rutina spouští jako úloha na pozadí, vrátí příslušné objekty.

Příklad kódu najdete v tématu Jak podporovat úlohy.

Následující rozhraní API poskytuje Windows PowerShell ke správě úloh na pozadí.

System.Management.Automation.Job Odvozuje vlastní objekty úloh. Toto je abstraktní třída.

System.Management.Automation.JobRepository Spravuje a poskytuje informace o aktuálních aktivních úlohách na pozadí.

System.Management.Automation.JobState Definuje stav úlohy na pozadí. Mezi stavy patří Spuštěno, Spuštěno a Zastaveno.

System.Management.Automation.JobStateInfo Poskytuje informace o stavu úlohy na pozadí a pokud poslední změna stavu způsobila chyba, důvod, proč úloha přešla do aktuálního stavu.

System.Management.Automation.JobStateEventArgs Poskytuje argumenty pro událost, která se vyvolá při změně stavu úlohy na pozadí.

Windows rutiny úloh PowerShellu

Následující rutiny poskytují Windows PowerShellu pro správu úloh na pozadí.

Get-Job

Získá Windows úlohy na pozadí PowerShellu spuštěné v aktuální relaci.

Receive-Job

Získá výsledky Windows úloh na pozadí PowerShellu v aktuální relaci.

Remove-Job

Odstraní Windows úlohu powershellu na pozadí.

Start-Job

Spustí Windows úlohu prostředí PowerShell na pozadí.

Stop-Job

Zastaví Windows úlohu powershellu na pozadí.

Wait-Job

Potlačí příkazový řádek, dokud nebude dokončen jeden nebo všechny Windows úlohy na pozadí PowerShellu spuštěné v relaci.

Viz také

Popis rutiny PowerShellu Windows