Receive-Job
Získá výsledky úloh PowerShellu na pozadí v aktuální relaci.
Syntax
Receive-Job
[-Job] <Job[]>
[[-Location] <String[]>]
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[<CommonParameters>]
Receive-Job
[-Job] <Job[]>
[[-ComputerName] <String[]>]
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[<CommonParameters>]
Receive-Job
[-Job] <Job[]>
[[-Session] <PSSession[]>]
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[<CommonParameters>]
Receive-Job
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[-Name] <String[]>
[<CommonParameters>]
Receive-Job
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[-InstanceId] <Guid[]>
[<CommonParameters>]
Receive-Job
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[-Id] <Int32[]>
[<CommonParameters>]
Description
Rutina Receive-Job
získá výsledky úloh PowerShellu na pozadí, jako jsou úlohy spuštěné pomocí Start-Job
rutiny nebo parametru AsJob jakékoli rutiny.
Můžete získat výsledky všech úloh nebo identifikovat úlohy podle jejich názvu, ID, ID instance, názvu počítače, umístění nebo relace nebo odesláním objektu úlohy.
Když spustíte úlohu PowerShellu na pozadí, úloha se spustí, ale výsledky se nezobrazí okamžitě. Místo toho příkaz vrátí objekt, který představuje úlohu na pozadí. Objekt úlohy obsahuje užitečné informace o úloze, ale neobsahuje výsledky. Tato metoda umožňuje pokračovat v práci v relaci, zatímco se úloha spustí. Další informace o úlohách na pozadí v PowerShellu najdete v tématu about_Jobs.
Rutina Receive-Job
získá výsledky, které byly vygenerovány v době odeslání Receive-Job
příkazu.
Pokud ještě nejsou výsledky dokončené, můžete zbývající výsledky získat spuštěním dalších Receive-Job
příkazů.
Ve výchozím nastavení se výsledky úloh při přijetí ze systému odstraní, ale výsledky můžete uložit pomocí parametru Keep , abyste je mohli znovu získat.
Pokud chcete odstranit výsledky úlohy, spusťte Receive-Job
příkaz znovu bez parametru Keep , zavřete relaci nebo pomocí Remove-Job
rutiny odstraňte úlohu z relace.
Od Windows PowerShell 3.0 Receive-Job
získá také výsledky vlastních typů úloh, jako jsou úlohy pracovního postupu a instance plánovaných úloh.
Pokud chcete povolit Receive-Job
získání výsledků jako vlastní typ úlohy, importujte modul, který podporuje typ vlastní úlohy, do relace před spuštěním Receive-Job
příkazu, a to buď pomocí Import-Module
rutiny, nebo pomocí rutiny nebo získáním rutiny v modulu.
Informace o konkrétním vlastním typu úlohy najdete v dokumentaci k funkci vlastního typu úlohy.
Příklady
Příklad 1: Získání výsledků pro určitou úlohu
$job = Start-Job -ScriptBlock {Get-Process}
Receive-Job -Job $job
Tyto příkazy používají parametr Job pro Receive-Job
získání výsledků konkrétní úlohy.
První příkaz spustí úlohu s Start-Job
a uloží objekt úlohy do $job
proměnné.
Druhý příkaz použije rutinu Receive-Job
k získání výsledků úlohy.
K určení úlohy používá parametr Úloha .
Příklad 2: Použití parametru Keep
$job = Start-Job -ScriptBlock {Get-Service dhcp, fakeservice}
$job | Receive-Job -Keep
Cannot find any service with service name 'fakeservice'.
+ CategoryInfo : ObjectNotFound: (fakeservice:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
+ PSComputerName : localhost
Status Name DisplayName
------ ---- -----------
Running dhcp DHCP Client
$job | Receive-Job -Keep
Cannot find any service with service name 'fakeservice'.
+ CategoryInfo : ObjectNotFound: (fakeservice:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
+ PSComputerName : localhost
Status Name DisplayName
------ ---- -----------
Running dhcp DHCP Client
Tento příklad uloží úlohu do $job
proměnné a předá ji do rutiny Receive-Job
. Parametr -Keep
se také používá k tomu, aby se po prvním zobrazení znovu načetla všechna data agregovaných datových proudů.
Příklad 3: Získání výsledků několika úloh na pozadí
Pokud ke spuštění úlohy použijete parametr Invoke-Command
AsJob, vytvoří se objekt úlohy v místním počítači, i když úloha běží na vzdálených počítačích.
V důsledku toho se ke správě úlohy používají místní příkazy.
Pokud použijete asJob, Vrátí PowerShell jeden objekt úlohy, který obsahuje podřízenou úlohu pro každou spuštěnou úlohu. V tomto případě objekt úlohy obsahuje tři podřízené úlohy, jednu pro každou úlohu na každém vzdáleném počítači.
# Use the Invoke-Command cmdlet with the -AsJob parameter to start a background job that runs a Get-Service command on three remote computers.
# Store the resulting job object in the $j variable
$j = Invoke-Command -ComputerName Server01, Server02, Server03 -ScriptBlock {Get-Service} -AsJob
# Display the value of the **ChildJobs** property of the job object in $j.
# The display shows that the command created three child jobs, one for the job on each remote computer.
# You could also use the -IncludeChildJobs parameter of the Get-Job cmdlet.
$j.ChildJobs
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
2 Job2 Completed True Server01 Get-Service
3 Job3 Completed True Server02 Get-Service
4 Job4 Completed True Server03 Get-Service
# Use the Receive-Job cmdlet to get the results of just the Job3 child job that ran on the Server02 computer.
# Use the *Keep* parameter to allow you to view the aggregated stream data more than once.
Receive-Job -Name Job3 -Keep
Status Name DisplayName PSComputerName
------ ----------- ----------- --------------
Running AeLookupSvc Application Experience Server02
Stopped ALG Application Layer Gateway Service Server02
Running Appinfo Application Information Server02
Running AppMgmt Application Management Server02
Příklad 4: Získání výsledků úloh na pozadí ve více vzdálených počítačích
# Use the New-PSSession cmdlet to create three user-managed PSSessions on three servers, and save the sessions in the $s variable.
$s = New-PSSession -ComputerName Server01, Server02, Server03
# Use Invoke-Command run a Start-Job command in each of the PSSessions in the $s variable.
# The creates a new job with a custom name to each server
# The job outputs the datetime from each server
# Save the job objects in the $j variable.
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -Name $('MyJob-' +$env:COMPUTERNAME) -ScriptBlock {(Get-Date).ToString()}}
# To confirm that these job objects are from the remote machines, run Get-Job to show no local jobs running.
Get-Job
# Display the three job objects in $j.
# Note that the Localhost location is not the local computer, but instead localhost as it relates to the job on each Server.
$j
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 MyJob-Server01 Completed True Localhost (Get-Date).ToString()
2 MyJob-Server02 Completed True Localhost (Get-Date).ToString()
3 MyJob-Server03 Completed True Localhost (Get-Date).ToString()
# Use Invoke-Command to run a Receive-Job command in each of the sessions in the $s variable and save the results in the $results variable.
# The Receive-Job command must be run in each session because the jobs were run locally on each server.
$results = Invoke-Command -Session $s -ScriptBlock {Receive-Job -Name $('MyJob-' +$env:COMPUTERNAME)}
3/22/2021 7:41:47 PM
3/22/2021 7:41:47 PM
3/22/2021 9:41:47 PM
Tento příklad ukazuje, jak získat výsledky úloh na pozadí spuštěných na třech vzdálených počítačích.
Na rozdíl od předchozího příkladu Start-Job
se spuštěním Invoke-Command
příkazu ve skutečnosti spustily tři nezávislé úlohy na každém ze tří počítačů. V důsledku toho příkaz vrátil tři objekty úloh představující tři úlohy spuštěné místně na třech různých počítačích.
Příklad 5: Přístup k podřízeným úloh
Parametr -Keep
zachovává stav agregovaných datových proudů úlohy, aby je bylo možné znovu zobrazit. Bez tohoto parametru se při přijetí úlohy vymažou všechna agregovaná data datového proudu. Další informace najdete v tématu about_Job_Details
Poznámka
Agregované datové proudy zahrnují streamy všech podřízených úloh. K jednotlivým datovým proudům můžete stále přistupovat prostřednictvím objektu úlohy a podřízených objektů úlohy.
Start-Job -Name TestJob -ScriptBlock {dir C:\, Z:\}
# Without the Keep parameter, aggregated child job data is displayed once.
# Then destroyed.
Receive-Job -Name TestJob
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 1/24/2019 7:11 AM Program Files
d-r--- 2/13/2019 8:32 AM Program Files (x86)
d-r--- 10/3/2018 11:47 AM Users
d----- 2/7/2019 1:52 AM Windows
Cannot find drive. A drive with the name 'Z' does not exist.
+ CategoryInfo : ObjectNotFound: (Z:String) [Get-ChildItem], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
+ PSComputerName : localhost
# It would seem that the child job data is gone.
Receive-Job -Name TestJob
# Using the object model, you can still retrieve child job data and streams.
$job = Get-Job -Name TestJob
$job.ChildJobs[0].Error
Cannot find drive. A drive with the name 'Z' does not exist.
+ CategoryInfo : ObjectNotFound: (Z:String) [Get-ChildItem], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
+ PSComputerName : localhost
Parametry
-AutoRemoveJob
Označuje, že tato rutina odstraní úlohu po vrácení výsledků úlohy.
Pokud má úloha více výsledků, úloha se stále odstraní, ale Receive-Job
zobrazí zprávu.
Tento parametr funguje pouze u vlastních typů úloh. Je určen pro instance typů úloh, které ukládají úlohu nebo typ mimo relaci, jako jsou například instance naplánovaných úloh.
Tento parametr nelze použít bez parametru Wait .
Tento parametr byl zaveden v Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
Určuje pole názvů počítačů.
Tento parametr vybere z výsledků úlohy, které jsou uložené v místním počítači.
Nezískat data pro úlohy spuštěné ve vzdálených počítačích.
Pokud chcete získat výsledky úloh, které jsou uložené ve vzdálených počítačích, použijte rutinu Invoke-Command
ke vzdálenému Receive-Job
spuštění příkazu.
Type: | String[] |
Aliases: | Cn |
Position: | 1 |
Default value: | All computers available |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Force
Označuje, že tato rutina dál čeká, pokud jsou úlohy ve stavu Pozastaveno nebo Odpojeno . Ve výchozím nastavení parametr Wait vrátí Receive-Job
nebo ukončí čekání, pokud jsou úlohy v jednom z následujících stavů:
- Dokončeno
- Neúspěšný
- Zastaveno
- Dočasně blokován.
- Odpojen.
Parametr Force je platný pouze v případech, kdy se v příkazu používá také parametr Wait .
Tento parametr byl zaveden v Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Určuje pole ID. Tato rutina získá výsledky úloh se zadanými ID.
ID je celé číslo, které jednoznačně identifikuje úlohu v aktuální relaci.
Je snazší si ho zapamatovat a zadat než ID instance, ale je jedinečné pouze v aktuální relaci. Můžete zadat jedno nebo více ID oddělených čárkami.
K vyhledání ID úlohy použijte Get-Job
.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Určuje pole ID instancí. Tato rutina získá výsledky úloh se zadanými ID instancí.
ID instance je identifikátor GUID, který jednoznačně identifikuje úlohu v počítači.
K vyhledání ID instance úlohy použijte rutinu Get-Job
.
Type: | Guid[] |
Position: | 0 |
Default value: | All instances |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Určuje úlohu, pro kterou se načítají výsledky.
Zadejte proměnnou obsahující úlohu nebo příkaz, který úlohu získá.
Objekt úlohy můžete také nasměrovat do Receive-Job
.
Type: | Job[] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Keep
Označuje, že tato rutina ukládá data agregovaných datových proudů v systému, a to i poté, co jste je obdrželi. Ve výchozím nastavení se agregovaná data datového proudu po zobrazení pomocí vymažou Receive-Job
.
Ukončení relace nebo odebrání úlohy pomocí Remove-Job
rutiny také odstraní agregovaná data datového proudu.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Location
Určuje pole umístění. Tato rutina získá pouze výsledky úloh v zadaných umístěních.
Type: | String[] |
Position: | 1 |
Default value: | All locations |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Určuje pole popisných názvů. Tato rutina získá výsledky úloh, které mají zadané názvy. Zástupné znaky jsou podporovány.
Type: | String[] |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-NoRecurse
Označuje, že tato rutina získává výsledky pouze ze zadané úlohy.
Ve výchozím nastavení Receive-Job
také získá výsledky všech podřízených úloh zadané úlohy.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Určuje pole relací.
Tato rutina získá výsledky úloh, které byly spuštěny v zadané relaci PowerShellu (PSSession).
Zadejte proměnnou, která obsahuje příkaz PSSession nebo příkaz, který získá PSSession, například Get-PSSession
příkaz.
Type: | PSSession[] |
Position: | 1 |
Default value: | All sessions |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Wait
Označuje, že tato rutina potlačí příkazový řádek, dokud nebudou přijaty všechny výsledky úlohy.
Ve výchozím nastavení Receive-Job
okamžitě vrátí dostupné výsledky.
Ve výchozím nastavení parametr Wait počká, dokud úloha nebude v jednom z následujících stavů:
- Dokončeno
- Neúspěšný
- Zastaveno
- Dočasně blokován.
- Odpojen.
Pokud chcete nastavit, aby parametr Wait pokračoval v čekání, pokud je úloha ve stavu Pozastaveno nebo Odpojeno, použijte parametr Force společně s parametrem Wait .
Tento parametr byl zaveden v Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WriteEvents
Označuje, že tato rutina hlásí změny ve stavu úlohy, zatímco čeká na dokončení úlohy.
Tento parametr je platný pouze v případě, že je v příkazu použit parametr Wait a parametr Keep je vynechán.
Tento parametr byl zaveden v Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WriteJobInResults
Označuje, že tato rutina vrátí objekt úlohy následovaný výsledky.
Tento parametr je platný pouze v případě, že je v příkazu použit parametr Wait a parametr Keep je vynechán.
Tento parametr byl zaveden v Windows PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Vstupy
Objekty úloh můžete do této rutiny převést.
Výstupy
Tato rutina vrátí výsledky příkazů v úloze.
Poznámky
PowerShell obsahuje následující aliasy pro Receive-Job
:
- Všechny platformy:
rcjb
Související odkazy
Váš názor
Odeslat a zobrazit názory pro