Sdílet prostřednictvím


Start-Job

Spustí úlohu PowerShellu na pozadí.

Syntax

Start-Job
     [-Name <String>]
     [-ScriptBlock] <ScriptBlock>
     [-Credential <PSCredential>]
     [-Authentication <AuthenticationMechanism>]
     [[-InitializationScript] <ScriptBlock>]
     [-RunAs32]
     [-PSVersion <Version>]
     [-InputObject <PSObject>]
     [-ArgumentList <Object[]>]
     [<CommonParameters>]
Start-Job
     [-DefinitionName] <String>
     [[-DefinitionPath] <String>]
     [[-Type] <String>]
     [<CommonParameters>]
Start-Job
     [-Name <String>]
     [-Credential <PSCredential>]
     [-FilePath] <String>
     [-Authentication <AuthenticationMechanism>]
     [[-InitializationScript] <ScriptBlock>]
     [-RunAs32]
     [-PSVersion <Version>]
     [-InputObject <PSObject>]
     [-ArgumentList <Object[]>]
     [<CommonParameters>]
Start-Job
     [-Name <String>]
     [-Credential <PSCredential>]
     -LiteralPath <String>
     [-Authentication <AuthenticationMechanism>]
     [[-InitializationScript] <ScriptBlock>]
     [-RunAs32]
     [-PSVersion <Version>]
     [-InputObject <PSObject>]
     [-ArgumentList <Object[]>]
     [<CommonParameters>]
Start-Job
     [-VMGuid] <Guid[]>
     [<CommonParameters>]
Start-Job
     [-VMGuid] <Guid[]>
     [<CommonParameters>]
Start-Job
     -VMName <String[]>
     [<CommonParameters>]
Start-Job
     -VMName <String[]>
     [<CommonParameters>]

Description

Rutina Start-Job spustí úlohu PowerShellu na pozadí v místním počítači.

Úloha PowerShellu na pozadí spustí příkaz bez interakce s aktuální relací. Když spustíte úlohu na pozadí, objekt úlohy se okamžitě vrátí, i když dokončení úlohy trvá delší dobu. Během běhu úlohy můžete pokračovat v práci v relaci bez přerušení.

Objekt úlohy obsahuje užitečné informace o úloze, ale neobsahuje výsledky úlohy. Po dokončení úlohy získejte výsledky úlohy pomocí Receive-Job rutiny . Další informace o úlohách na pozadí najdete v tématu about_Jobs.

Pokud chcete spustit úlohu na pozadí na vzdáleném počítači, použijte parametr AsJob , který je k dispozici u mnoha rutin, nebo použijte rutinu Invoke-Command ke spuštění Start-Job příkazu ve vzdáleném počítači. Další informace najdete v tématu about_Remote_Jobs.

Od PowerShellu 3.0 Start-Job může spouštět instance vlastních typů úloh, jako jsou naplánované úlohy. Informace o použití Start-Job ke spuštění úloh s vlastními typy najdete v dokumentech nápovědy k funkci typu úlohy.

Příklady

Příklad 1: Spuštění úlohy na pozadí

Tento příklad spustí úlohu, která běží na pozadí v místním počítači.

Start-Job -ScriptBlock {Get-Process}

Id  Name   PSJobTypeName   State     HasMoreData   Location    Command
--  ----   -------------   -----     -----------   --------    -------
1   Job1   BackgroundJob   Running   True          localhost   Get-Process

Start-Jobpoužívá ke spuštění Get-Process jako úlohu na pozadí parametr ScriptBlock. Zobrazí se informace o úloze a PowerShell se vrátí k příkazovému řádku, zatímco úloha běží na pozadí.

Příklad 2: Spuštění úlohy pomocí Invoke-Command

Tento příklad spustí úlohu na více počítačích. Úloha je uložená v proměnné a spouští se pomocí názvu proměnné na příkazovém řádku PowerShellu.

$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
   Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob

Úloha, která používá Invoke-Command , se vytvoří a uloží v $jobWRM proměnné . Invoke-Command používá parametr ComputerName k určení počítačů, ve kterých se úloha spouští. Get-Content získá názvy serverů ze C:\Servers.txt souboru.

Parametr ScriptBlock určuje příkaz, který Get-Service získá službu WinRM . Parametr JobName určuje popisný název úlohy , WinRM. Parametr ThrottleLimit omezuje počet souběžných příkazů na 16. Parametr AsJob spustí úlohu na pozadí, která spustí příkaz na serverech.

Příklad 3: Získání informací o úloze

Tento příklad získá informace o úloze a zobrazí výsledky dokončené úlohy, která byla spuštěna v místním počítači.

$j = Start-Job -ScriptBlock { Get-WinEvent -Log System } -Credential Domain01\User01
$j | Select-Object -Property *

State         : Completed
HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Get-WinEvent -Log System
JobStateInfo  : Completed
Finished      : System.Threading.ManualResetEvent
InstanceId    : 27ce3fd9-40ed-488a-99e5-679cd91b9dd3
Id            : 18
Name          : Job18
ChildJobs     : {Job19}
PSBeginTime   : 8/8/2019 14:41:57
PSEndTime     : 8/8/2019 14:42:07
PSJobTypeName : BackgroundJob
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
Information   : {}

Start-Job používá parametr ScriptBlock ke spuštění příkazu, který určuje Get-WinEvent získání systémového protokolu. Parametr Credential určuje účet uživatele domény s oprávněním ke spuštění úlohy v počítači. Objekt úlohy je uložený v $j proměnné .

Objekt v $j proměnné se odešle kanálem do Select-Object. Parametr Property určuje hvězdičku (*), která zobrazí všechny vlastnosti objektu úlohy.

Příklad 4: Spuštění skriptu jako úlohy na pozadí

V tomto příkladu se skript v místním počítači spouští jako úloha na pozadí.

Start-Job -FilePath C:\Scripts\Sample.ps1

Start-Job používá parametr FilePath k určení souboru skriptu, který je uložený v místním počítači.

Příklad 5: Získání procesu pomocí úlohy na pozadí

Tento příklad používá úlohu na pozadí k získání zadaného procesu podle názvu.

Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }

Start-Job používá parametr Name k zadání popisného názvu úlohy , PShellJob. Parametr ScriptBlock určuje Get-Process , že se mají načíst procesy s názvem PowerShell.

Příklad 6: Shromažďování a ukládání dat pomocí úlohy na pozadí

Tento příklad spustí úlohu, která shromáždí velké množství mapových dat a pak je uloží do .tif souboru.

Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {
   Get-Map -Name * | Set-Content -Path D:\Maps.tif } -RunAs32

Start-Job používá parametr Name k zadání popisného názvu úlohy GetMappingFiles. Parametr InitializationScript spustí blok skriptu, který importuje modul MapFunctions . Spustí se parametr Get-MapScriptBlock a Set-Content uloží data do umístění určeného parametrem Path. Parametr RunAs32 spustí proces jako 32bitovou verzi, a to i v 64bitovém operačním systému.

Příklad 7: Předání vstupu do úlohy na pozadí

V tomto příkladu se ke zpracování vstupního objektu $input používá automatická proměnná. Příkaz slouží Receive-Job k zobrazení výstupu úlohy.

Start-Job -ScriptBlock { Get-Content $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep

Server01
Server02
Server03
Server04

Start-Job používá parametr ScriptBlock ke spuštění Get-Content s automatickou $input proměnnou. Proměnná $input získá objekty z parametru InputObject . Receive-Job pomocí parametru Name určí úlohu a vypíše výsledky. Parametr Keep uloží výstup úlohy, aby ho bylo možné znovu zobrazit během relace PowerShellu.

Parametry

-ArgumentList

Určuje pole argumentů nebo hodnot parametrů pro skript určený parametrem FilePath .

Vzhledem k tomu, že všechny hodnoty, které následují za názvem parametru ArgumentList , jsou interpretovány jako hodnoty ArgumentList, zadejte tento parametr jako poslední parametr v příkazu.

Type:Object[]
Aliases:Args
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ěřování přihlašovacích údajů uživatele.

Přijatelné hodnoty pro tento parametr jsou následující:

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

Výchozí hodnota je Výchozí.

Ověřování CredSSP je k dispozici pouze v systému Windows Vista, Windows Server 2008 a novějších verzích operačního systému Windows.

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

Upozornění

Ověřování credSSP (Credential Security Support Provider), při kterém se přihlašovací údaje uživatele předávají vzdálenému počítači k ověření, je určeno pro příkazy, které vyžadují ověření u více než jednoho prostředku, například pro přístup ke vzdálené sdílené síťové složce. Tento mechanismus zvyšuje bezpečnostní riziko vzdálené operace. Pokud dojde k ohrožení zabezpečení vzdáleného počítače, mohou být k řízení síťové relace použity 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:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Určuje uživatelský účet, který má oprávnění k provedení této akce. Pokud parametr Credential není zadaný, příkaz použije přihlašovací údaje aktuálního uživatele.

Zadejte uživatelské jméno, například User01 nebo Domain01\User01, nebo zadejte objekt PSCredential , například objekt z rutiny Get-Credential .

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

-DefinitionName

Určuje název definice úlohy, kterou tato rutina spustí. Tento parametr slouží ke spuštění vlastních typů úloh, které mají název definice, například naplánované úlohy.

Pokud použijete Start-Job ke spuštění instance naplánované úlohy, úloha se spustí okamžitě, bez ohledu na aktivační události úlohy nebo možnosti úlohy. Výsledná instance úlohy je naplánovaná úloha, ale neuloží se na disk jako aktivované naplánované úlohy. Parametr ArgumentListStart-Job z nemůžete použít k zadání hodnot parametrů skriptů, které běží v naplánované úloze. Další informace najdete v tématu about_Scheduled_Jobs.

Tento parametr byl zaveden v PowerShellu 3.0.

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

-DefinitionPath

Určuje cestu k definici úlohy, kterou tato rutina spustí. Zadejte cestu definice. Zřetězení hodnot parametrů DefinitionPath a DefinitionName je plně kvalifikovanou cestou definice úlohy. Pomocí tohoto parametru můžete spustit vlastní typy úloh, které mají cestu k definici, například naplánované úlohy.

U naplánovaných úloh je $home\AppData\Local\Windows\PowerShell\ScheduledJobhodnota parametru DefinitionPath .

Tento parametr byl zaveden v PowerShellu 3.0.

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

-FilePath

Určuje místní skript, který Start-Job se spouští jako úloha na pozadí. Zadejte cestu a název souboru skriptu nebo pomocí kanálu odešlete cestu skriptu do Start-Job. Skript musí být v místním počítači nebo ve složce, ke které má místní počítač přístup.

Když použijete tento parametr, PowerShell převede obsah zadaného souboru skriptu na blok skriptu a spustí blok skriptu jako úlohu na pozadí.

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

-InitializationScript

Určuje příkazy, které se spustí před spuštěním úlohy. Pokud chcete vytvořit blok skriptu, uzavřete příkazy do složených závorek ({}).

Tento parametr použijte k přípravě relace, ve které se úloha spustí. Můžete ho například použít k přidání funkcí, modulů snap-in a modulů do relace.

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

-InputObject

Určuje vstup do příkazu. Zadejte proměnnou, která obsahuje objekty, nebo zadejte příkaz nebo výraz, který objekty vygeneruje.

V hodnotě parametru ScriptBlock použijte automatickou $input proměnnou k reprezentaci vstupních objektů.

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

-LiteralPath

Určuje místní skript, který tato rutina spustí jako úlohu na pozadí. Zadejte cestu ke skriptu v místním počítači.

Start-Job použije hodnotu parametru LiteralPath přesně tak, jak je zadán. Žádné znaky nejsou interpretovány jako zástupné znaky. Pokud cesta obsahuje řídicí znaky, uzavřete ji do jednoduchých uvozovek. Jednoduché uvozovky říkají PowerShellu, že nemá interpretovat žádné znaky jako řídicí sekvence.

Type:String
Aliases:PSPath
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

Určuje popisný název nové úlohy. Název můžete použít k identifikaci úlohy pro jiné rutiny úlohy, jako je rutina Stop-Job .

Výchozí popisný název je Job#, kde # je pořadové číslo, které se pro každou úlohu zvýší.

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

-PSVersion

Určuje verzi. Start-Job spustí úlohu s verzí PowerShellu. Přijatelné hodnoty pro tento parametr jsou: 2.0 a 3.0.

Tento parametr byl zaveden v PowerShellu 3.0.

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

-RunAs32

Označuje, že Start-Job se úloha spouští v 32bitovém procesu. RunAs32 vynutí spuštění úlohy v 32bitovém procesu, a to i v 64bitovém operačním systému.

Pokud Start-Job příkaz v 64bitových verzích Systémů Windows 7 a Windows Server 2008 R2 obsahuje parametr RunAs32 , nemůžete pomocí parametru Credential zadat přihlašovací údaje jiného uživatele.

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

-ScriptBlock

Určuje příkazy, které se mají spustit v úloze na pozadí. Pokud chcete vytvořit blok skriptu, uzavřete příkazy do složených závorek ({}). Použijte automatickou $input proměnnou pro přístup k hodnotě parametru InputObject . Tento parametr je povinný.

Type:ScriptBlock
Aliases:Command
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Type

Určuje vlastní typ pro úlohy spuštěné nástrojem Start-Job. Zadejte název vlastního typu úlohy, například PSScheduledJob pro naplánované úlohy nebo PSWorkflowJob pro úlohy pracovních postupů. Tento parametr není platný pro standardní úlohy na pozadí.

Tento parametr byl zaveden v PowerShellu 3.0.

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

Vstupy

String

Kanál můžete použít k odeslání objektu s vlastností Name do parametru Name . Můžete například vytvořit kanál objektu FileInfo z Get-ChildItem do Start-Job.

Výstupy

System.Management.Automation.PSRemotingJob

Start-Job vrátí OBJEKT PSRemotingJob , který představuje úlohu, kterou spustil.

Poznámky

Pokud chcete spustit na pozadí, Start-Job spustí se v aktuální relaci ve vlastní relaci. Když použijete rutinu Invoke-Command ke spuštění Start-Job příkazu v relaci na vzdáleném počítači, Start-Job spustí se v relaci ve vzdálené relaci.