Aracılığıyla paylaş


Receive-Job

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

Sözdizimi

Location EnterprisePublishing

Receive-Job
    [-Job] <Job[]>
    [[-Location] <string[]>]
    [-Keep]
    [-NoRecurse]
    [-Force]
    [-Wait]
    [-AutoRemoveJob]
    [-WriteEvents]
    [-WriteJobInResults]
    [<CommonParameters>]

ComputerName

Receive-Job
    [-Job] <Job[]>
    [[-ComputerName] <string[]>]
    [-Keep]
    [-NoRecurse]
    [-Force]
    [-Wait]
    [-AutoRemoveJob]
    [-WriteEvents]
    [-WriteJobInResults]
    [<CommonParameters>]

Session

Receive-Job
    [-Job] <Job[]>
    [[-Session] <PSSession[]>]
    [-Keep]
    [-NoRecurse]
    [-Force]
    [-Wait]
    [-AutoRemoveJob]
    [-WriteEvents]
    [-WriteJobInResults]
    [<CommonParameters>]

NameParameterSet

Receive-Job
    [-Name] <string[]>
    [-Keep]
    [-NoRecurse]
    [-Force]
    [-Wait]
    [-AutoRemoveJob]
    [-WriteEvents]
    [-WriteJobInResults]
    [<CommonParameters>]

InstanceIdParameterSet

Receive-Job
    [-InstanceId] <guid[]>
    [-Keep]
    [-NoRecurse]
    [-Force]
    [-Wait]
    [-AutoRemoveJob]
    [-WriteEvents]
    [-WriteJobInResults]
    [<CommonParameters>]

SessionIdParameterSet

Receive-Job
    [-Id] <int[]>
    [-Keep]
    [-NoRecurse]
    [-Force]
    [-Wait]
    [-AutoRemoveJob]
    [-WriteEvents]
    [-WriteJobInResults]
    [<CommonParameters>]

Description

Receive-Job cmdlet'i, Start-Job cmdlet'i veya herhangi bir cmdlet'in AsJob parametresi kullanılarak 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.

Receive-Job cmdlet'i, Receive-Job komutu gönderildiğinde 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ı yeniden alabilmek için kaydetmek için Tut parametresini kullanabilirsiniz. İş sonuçlarını silmek için Receive-Job Tut parametresi olmadan komutunu yeniden çalıştırın, oturumu kapatın veya işi oturumdan silmek için Remove-Job cmdlet'ini kullanın.

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. Receive-Job sonuçları özel bir iş türüne almasını sağlamak için, Receive-Job cmdlet'ini kullanarak veya modülde bir cmdlet alarak Import-Module komutu çalıştırmadan önce özel iş türünü destekleyen modülü 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 Receive-Job parametresini kullanır.

İlk komut, Start-Job ile bir iş başlatır ve iş nesnesini $job değişkeninde depolar.

İkinci komut, işin sonuçlarını almak için Receive-Job cmdlet'ini kullanır. İşi belirtmek için İşi 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 $job değişkeninde depolar ve işi Receive-Job cmdlet'ine 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 Invoke-Command parametresini 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, AsJobkullandığı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, Invoke-Command komutunu çalıştırmak için Start-Job kullanmak aslında üç 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

-Keep parametresi, 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

Uyarı

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.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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 Invoke-Command komutunu uzaktan çalıştırmak için Receive-Job cmdlet'ini kullanın.

Parametre özellikleri

Tür:

String[]

Default value:All computers available
Joker karakterleri destekler:True
DontShow:False
Diğer adlar:Cn

Parametre kümeleri

ComputerName
Position:1
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-Force

İşler Askıya Alındı veya Bağlantısı Kesilmiş durumunda bu cmdlet'in beklemeye devam ettiğini gösterir. varsayılan olarak, Receive-Job parametresi, işler aşağıdaki durumlardan birinde olduğunda beklemeyi döndürür veya sonlandırır:

  • Tamamlandı
  • Başarısız oldu
  • 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.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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. İşin kimliğini bulmak için Get-Jobkullanın.

Parametre özellikleri

Tür:

Int32[]

Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

SessionIdParameterSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer: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 Get-Job cmdlet'ini kullanın.

Parametre özellikleri

Tür:

Guid[]

Default value:All instances
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

InstanceIdParameterSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer: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 Receive-Job'e de yöneltebilirsiniz.

Parametre özellikleri

Tür:

Job[]

Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

Location
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False
Session
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False
ComputerName
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-Keep

Bu cmdlet'in toplanmış akış verilerini aldıktan sonra bile sisteme kaydettiğini gösterir. Varsayılan olarak, toplanan akış verileri Receive-Jobile görüntülendikten sonra silinir.

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

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Location

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

Parametre özellikleri

Tür:

String[]

Default value:All locations
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

Location
Position:1
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Name

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

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

NameParameterSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-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.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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 komutu gibi Get-PSSessionalan bir komut girin.

Parametre özellikleri

Tür:

PSSession[]

Default value:All sessions
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

Session
Position:1
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

-Wait

Bu cmdlet'in tüm iş sonuçları alınana kadar komut istemini gizlediğini gösterir. Varsayılan olarak, Receive-Job hemen kullanılabilir sonuçları döndürür.

varsayılan olarak, Wait parametresi iş aşağıdaki durumlardan birine gelene kadar bekler:

  • Tamamlandı
  • Başarısız oldu
  • Durduruldu
  • Askıya alındı
  • Bağlantısı kesilmiş

Wait parametresini, iş durumu Askıya Alındı veya Bağlantısı Kesildi olduğunda 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.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:SwitchParameter
Default value:False
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

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, Receive-Jobiçin aşağıdaki diğer adları içerir:

  • Tüm platformlar:
    • rcjb