Receive-Job
Geçerli oturumdaki PowerShell arka plan işlerinin sonuçlarını alır.
Sözdizimi
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
[-Name] <string[]>
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[<CommonParameters>]
Receive-Job
[-InstanceId] <guid[]>
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[<CommonParameters>]
Receive-Job
[-Id] <int[]>
[-Keep]
[-NoRecurse]
[-Force]
[-Wait]
[-AutoRemoveJob]
[-WriteEvents]
[-WriteJobInResults]
[<CommonParameters>]
Description
Receive-Job
Cmdlet, cmdlet'i veya herhangi bir cmdlet'in AsJob parametresi kullanılarak Start-Job
başlatılanlar gibi PowerShell arka plan işlerinin sonuçlarını alır. Tüm işlerin sonuçlarını alabilir veya işleri adlarına, kimliklerine, örnek kimliğine, bilgisayar adına, konumuna veya oturumuna göre veya bir iş nesnesi göndererek tanımlayabilirsiniz.
Bir PowerShell arka plan işi başlattığınızda iş başlar, ancak sonuçlar hemen görünmez. Bunun yerine, komut arka plan işini temsil eden bir nesne döndürür. İş nesnesi iş hakkında yararlı bilgiler içerir, ancak sonuçları içermez. Bu yöntem, iş çalışırken oturumda çalışmaya devam etmenizi sağlar. PowerShell'deki arka plan işleri hakkında daha fazla bilgi için bkz . about_Jobs.
cmdlet'i Receive-Job
, komutun gönderildiği zamana Receive-Job
kadar oluşturulan sonuçları alır. Sonuçlar henüz tamamlanmamışsa, kalan sonuçları almak için ek Receive-Job
komutlar çalıştırabilirsiniz.
Varsayılan olarak, iş sonuçları aldığınızda sistemden silinir, ancak sonuçları kaydetmek için Keep parametresini kullanarak sonuçları yeniden alabilirsiniz. İş sonuçlarını silmek için Keep parametresi olmadan komutunu yeniden çalıştırınReceive-Job
, oturumu kapatın veya işi oturumdan silmek için cmdlet'ini kullanınRemove-Job
.
Windows PowerShell 3.0'dan başlayarak, Receive-Job
iş akışı işleri ve zamanlanmış işlerin örnekleri gibi özel iş türlerinin sonuçlarını da alır. Sonuçları özel bir iş türü almayı etkinleştirmek Receive-Job
için, cmdlet'ini kullanarak Import-Module
veya modülde bir cmdlet alarak özel iş türünü destekleyen modülü bir Receive-Job
komut çalıştırmadan önce oturuma aktarın. Belirli bir özel iş türü hakkında bilgi için özel iş türü özelliğinin belgelerine bakın.
Örnekler
Örnek 1: Belirli bir işin sonuçlarını alma
$job = Start-Job -ScriptBlock {Get-Process}
Start-Sleep -Seconds 1
Receive-Job -Job $job
Bu komutlar, belirli bir işin sonuçlarını almak için job parametresini Receive-Job
kullanır.
İlk komut ile Start-Job
bir iş başlatır ve iş nesnesini değişkende $job
depolar.
İkinci komut, işin sonuçlarını almak için cmdlet'ini kullanır Receive-Job
.
İşi belirtmek için job parametresini kullanır.
Örnek 2: Keep parametresini kullanma
$job = Start-Job -ScriptBlock {Get-Service dhcp, fakeservice}
Start-Sleep -Seconds 1
$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
Bu örnek bir işi değişkeninde $job
depolar ve işi cmdlet'ine Receive-Job
aktarır. -Keep
parametresi, toplanan tüm akış verilerinin ilk görünümden sonra yeniden alınmasına izin vermek için de kullanılır.
Örnek 3: Birkaç arka plan işinin sonuçlarını alma
Bir işi başlatmak için asjob parametresini Invoke-Command
kullandığınızda, iş uzak bilgisayarlarda çalıştırılıyor olsa bile yerel bilgisayarda iş nesnesi oluşturulur. Sonuç olarak, işi yönetmek için yerel komutları kullanırsınız.
Ayrıca, AsJob kullandığınızda PowerShell, başlatılan her iş için bir alt iş içeren bir iş nesnesi döndürür. Bu durumda, iş nesnesi her uzak bilgisayardaki her iş için bir tane olan üç alt iş içerir.
# 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
Örnek 4: Birden çok uzak bilgisayarda arka plan işlerinin sonuçlarını alma
# 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 code 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.
$invokeCommandSplat = @{
Session = $s
ScriptBlock = {
Start-Job -Name $('MyJob-' +$env:COMPUTERNAME) -ScriptBlock {
(Get-Date).ToString()
}
}
}
$j = Invoke-Command @invokeCommandSplat
# 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
Bu örnekte, arka plan işlerinin sonuçlarının üç uzak bilgisayarda nasıl çalıştırılacakları gösterilmektedir. Önceki örnekten farklı olarak komutunu çalıştırmak Start-Job
için komutunu Invoke-Command
kullanarak üç bilgisayarın her birinde üç bağımsız iş başlattı. Sonuç olarak, komut üç farklı bilgisayarda yerel olarak çalıştırılacak üç işi temsil eden üç iş nesnesi döndürdü.
Örnek 5: Alt işlere erişme
parametresi, -Keep
bir işin toplanmış akışlarının durumunu koruyarak yeniden görüntülenebilmesini sağlar. Bu parametre olmadan, iş alındığında toplanan tüm akış verileri silinir.
Daha fazla bilgi için bkz. about_Job_Details
Not
Toplanan akışlar tüm alt işlerin akışlarını içerir. Yine de iş nesnesi ve alt iş nesneleri aracılığıyla tek tek veri akışlarına ulaşabilirsiniz.
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
Parametreler
-AutoRemoveJob
Bu cmdlet'in iş sonuçlarını döndürdükten sonra işi sildiğini gösterir. İşin daha fazla sonucu varsa, iş yine de silinir, ancak Receive-Job
bir ileti görüntüler.
Bu parametre yalnızca özel iş türlerinde çalışır. İşi kaydeden iş türlerinin örnekleri veya zamanlanmış işlerin örnekleri gibi oturumun dışındaki tür için tasarlanmıştır.
Bu parametre Wait parametresi olmadan kullanılamaz.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ComputerName
Bilgisayar adlarının bir dizisini belirtir.
Bu parametre, yerel bilgisayarda depolanan iş sonuçları arasından seçim yapın. Uzak bilgisayarlarda çalıştırılacak işler için veri almaz. Uzak bilgisayarlarda depolanan iş sonuçlarını almak için cmdlet'ini Invoke-Command
kullanarak komutu Receive-Job
uzaktan çalıştırın.
Tür: | String[] |
Diğer adlar: | Cn |
Position: | 1 |
Default value: | All computers available |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-Force
İşler Askıya Alındı veya Bağlantısı Kesildi durumundaysa bu cmdlet'in beklemeye devam ettiğini gösterir. Varsayılan olarak, işlerin aşağıdaki durumlardan Receive-Job
birinde olduğunda Wait parametresi beklemeyi döndürür veya sonlandırır:
- Tamamlandı
- Başarısız
- Durduruldu
- Askıya alındı
- Bağlantısı kesilmiş.
Force parametresi yalnızca komutta Wait parametresi de kullanıldığında geçerlidir.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Id
Bir kimlik dizisi belirtir. Bu cmdlet, belirtilen kimliklere sahip işlerin sonuçlarını alır.
Kimlik, geçerli oturumdaki işi benzersiz olarak tanımlayan bir tamsayıdır. örnek kimliğinden daha kolay anımsanıp yazılır, ancak yalnızca geçerli oturumda benzersizdir. Virgülle ayrılmış bir veya daha fazla kimlik yazabilirsiniz. bir işin kimliğini bulmak için kullanın Get-Job
.
Tür: | Int32[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-InstanceId
Örnek kimlikleri dizisini belirtir. Bu cmdlet, belirtilen örnek kimliklerine sahip işlerin sonuçlarını alır.
Örnek kimliği, bilgisayardaki işi benzersiz olarak tanımlayan bir GUID'dir. Bir işin örnek kimliğini bulmak için cmdlet'ini Get-Job
kullanın.
Tür: | Guid[] |
Position: | 0 |
Default value: | All instances |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Job
Sonuçların alınmakta olduğu işi belirtir.
İşi içeren bir değişken veya işi alan bir komut girin. Ayrıca bir iş nesnesini öğesine de yöneltebilirsiniz Receive-Job
.
Tür: | Job[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Keep
Bu cmdlet'in toplanmış akış verilerini aldıktan sonra bile sisteme kaydettiğini gösterir. Varsayılan olarak, toplanan akış verileri ile Receive-Job
görüntülendikten sonra silinir.
Oturumu kapatma veya cmdlet ile Remove-Job
işi kaldırma işlemi, toplanan akış verilerini de siler.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Location
Konum dizisini belirtir. Bu cmdlet yalnızca belirtilen konumlardaki işlerin sonuçlarını alır.
Tür: | String[] |
Position: | 1 |
Default value: | All locations |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Name
Kolay ad dizisini belirtir. Bu cmdlet, belirtilen adlara sahip işlerin sonuçlarını alır. Joker karakterler desteklenmektedir.
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-NoRecurse
Bu cmdlet'in yalnızca belirtilen işten sonuç aldığını gösterir. Varsayılan olarak, Receive-Job
belirtilen işin tüm alt işlerinin sonuçlarını da alır.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Session
Bir oturum dizisini belirtir. Bu cmdlet, belirtilen PowerShell oturumunda (PSSession) çalıştırılan işlerin sonuçlarını alır. PSSession içeren bir değişken veya komut gibi PSSession'ı alan bir Get-PSSession
komut girin.
Tür: | PSSession[] |
Position: | 1 |
Default value: | All sessions |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Wait
Bu cmdlet'in tüm iş sonuçları alınana kadar komut istemini gizlediğini gösterir. Varsayılan olarak, Receive-Job
kullanılabilir sonuçları hemen döndürür.
Varsayılan olarak Wait parametresi, iş aşağıdaki durumlardan birine gelene kadar bekler:
- Tamamlandı
- Başarısız
- Durduruldu
- Askıya alındı
- Bağlantı kesildi
wait parametresini, iş durumu Askıya Alındı veya Bağlantısı Kesildi ise beklemeye devam etmeye yönlendirmek için, Wait parametresiyle birlikte Force parametresini kullanın.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-WriteEvents
Bu cmdlet'in işin bitmesini beklerken iş durumundaki değişiklikleri bildirdiğini gösterir.
Bu parametre yalnızca komutta Wait parametresi kullanıldığında ve Keep parametresi atlandığında geçerlidir.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-WriteJobInResults
Bu cmdlet'in iş nesnesini ve ardından sonuçları döndürdüğünü gösterir.
Bu parametre yalnızca komutta Wait parametresi kullanıldığında ve Keep parametresi atlandığında geçerlidir.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
İş nesnelerini bu cmdlet'e yöneltebilirsiniz.
Çıkışlar
Bu cmdlet, işteki komutların sonuçlarını döndürür.
Notlar
PowerShell için aşağıdaki diğer adları Receive-Job
içerir:
- Tüm platformlar:
rcjb
İlişkili Bağlantılar
PowerShell