Receive-Job

Geçerli oturumdaki PowerShell arka plan işlerinin sonuçlarını alır.

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

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, özel iş türünü destekleyen modülü, cmdlet'ini kullanarak Import-Module veya modülde bir cmdlet alarak 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}
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}
$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 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

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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Aliases:Cn
Position:1
Default value:All computers available
Required:False
Accept pipeline input:True
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 yazabilirsiniz, 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.

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:Guid[]
Position:0
Default value:All instances
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:Job[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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-Jobgörüntülendikten sonra silinir.

Oturumu kapatma veya cmdlet ile Remove-Job işi kaldırma işlemi, toplanan akış verilerini de siler.

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

-Location

Konum dizisini belirtir. Bu cmdlet yalnızca belirtilen konumlardaki işlerin sonuçlarını alır.

Type:String[]
Position:1
Default value:All locations
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Kolay ad dizisini belirtir. Bu cmdlet, belirtilen adlara sahip işlerin sonuçlarını alır. Joker karakterler desteklenmektedir.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:PSSession[]
Position:1
Default value:All sessions
Required:False
Accept pipeline input:True
Accept wildcard characters: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ısı kesilmiş.

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.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

Girişler

Job

İş nesnelerini bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

PSObject

Bu cmdlet, işteki komutların sonuçlarını döndürür.

Notlar

PowerShell için aşağıdaki diğer adları Receive-Jobiçerir:

  • Tüm platformlar:
    • rcjb