Bagikan melalui


Receive-Job

Mendapatkan hasil pekerjaan latar belakang PowerShell dalam sesi saat ini.

Sintaks

Location (Default)

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

Deskripsi

Cmdlet mendapatkan hasil pekerjaan latar belakang PowerShell, seperti yang dimulai dengan menggunakan cmdlet atau parameter AsJob dari cmdlet apa pun. Anda bisa mendapatkan hasil semua pekerjaan atau mengidentifikasi pekerjaan berdasarkan nama, ID, ID instans, nama komputer, lokasi, atau sesi, atau dengan mengirimkan objek pekerjaan.

Saat Anda memulai pekerjaan latar belakang PowerShell, pekerjaan dimulai, tetapi hasilnya tidak segera muncul. Sebagai gantinya, perintah mengembalikan objek yang mewakili pekerjaan latar belakang. Objek pekerjaan berisi informasi yang berguna tentang pekerjaan, tetapi tidak berisi hasilnya. Metode ini memungkinkan Anda terus bekerja dalam sesi saat pekerjaan berjalan. Untuk informasi selengkapnya tentang pekerjaan latar belakang di PowerShell, lihat about_Jobs.

cmdlet Receive-Job mendapatkan hasil yang telah dihasilkan pada saat perintah Receive-Job dikirimkan. Jika hasilnya belum selesai, Anda dapat menjalankan perintah tambahan Receive-Job untuk mendapatkan hasil yang tersisa.

Secara default, hasil pekerjaan dihapus dari sistem saat Anda menerimanya, tetapi Anda dapat menggunakan parameter Keep untuk menyimpan hasilnya sehingga Anda dapat menerimanya lagi. Untuk menghapus hasil pekerjaan, jalankan perintah Receive-Job lagi tanpa parameter Keep, tutup sesi, atau gunakan cmdlet Remove-Job untuk menghapus pekerjaan dari sesi.

Mulai Windows PowerShell 3.0, Receive-Job juga mendapatkan hasil jenis pekerjaan kustom, seperti pekerjaan alur kerja dan instans pekerjaan terjadwal. Untuk mengaktifkan Receive-Job untuk mendapatkan hasil jenis pekerjaan kustom, impor modul yang mendukung jenis pekerjaan kustom ke dalam sesi sebelum menjalankan Receive-Job perintah, baik dengan menggunakan Import-Module cmdlet atau dengan mendapatkan cmdlet dalam modul. Untuk informasi tentang jenis pekerjaan kustom tertentu, lihat dokumentasi fitur jenis pekerjaan kustom.

Contoh

Contoh 1: Dapatkan hasil untuk pekerjaan tertentu

$job = Start-Job -ScriptBlock {Get-Process}
Start-Sleep -Seconds 1
Receive-Job -Job $job

Perintah ini menggunakan parameter JobReceive-Job untuk mendapatkan hasil pekerjaan tertentu.

Perintah pertama memulai pekerjaan dengan Start-Job dan menyimpan objek pekerjaan dalam variabel $job.

Perintah kedua menggunakan cmdlet Receive-Job untuk mendapatkan hasil pekerjaan. Ini menggunakan parameter Pekerjaan untuk menentukan pekerjaan.

Contoh 2: Gunakan parameter Keep

$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

Contoh ini menyimpan pekerjaan dalam variabel $job, dan menyalurkan pekerjaan ke cmdlet Receive-Job. Parameter -Keep juga digunakan untuk memungkinkan semua data aliran agregat diambil lagi setelah tampilan pertama.

Contoh 3: Mendapatkan hasil dari beberapa pekerjaan latar belakang

Saat Anda menggunakan parameter Invoke-Command untuk memulai pekerjaan, objek pekerjaan dibuat di komputer lokal, meskipun pekerjaan berjalan di komputer jarak jauh. Akibatnya, Anda menggunakan perintah lokal untuk mengelola pekerjaan.

Selain itu, saat Anda menggunakan AsJob, PowerShell mengembalikan satu objek pekerjaan yang berisi pekerjaan anak untuk setiap pekerjaan yang dimulai. Dalam hal ini, objek pekerjaan berisi tiga pekerjaan anak, satu untuk setiap pekerjaan di setiap komputer jarak jauh.

# 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

Contoh 4: Mendapatkan hasil pekerjaan latar belakang di beberapa komputer jarak jauh

# 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

Contoh ini menunjukkan cara mendapatkan hasil pekerjaan latar belakang yang dijalankan pada tiga komputer jarak jauh. Tidak seperti contoh sebelumnya, menggunakan Invoke-Command untuk menjalankan perintah Start-Job benar-benar memulai tiga pekerjaan independen pada masing-masing dari tiga komputer. Akibatnya, perintah mengembalikan tiga objek pekerjaan yang mewakili tiga pekerjaan yang dijalankan secara lokal pada tiga komputer yang berbeda.

Contoh 5: Mengakses pekerjaan anak

Parameter -Keep mempertahankan status aliran agregat pekerjaan sehingga dapat dilihat lagi. Tanpa parameter ini, semua data aliran agregat dihapus ketika pekerjaan diterima. Untuk informasi selengkapnya, lihat about_Job_Details

Nota

Aliran agregat mencakup aliran semua pekerjaan anak. Anda masih dapat menjangkau aliran data individual melalui objek pekerjaan dan objek pekerjaan anak.

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

Parameter

-AutoRemoveJob

Menunjukkan bahwa cmdlet ini menghapus pekerjaan setelah mengembalikan hasil pekerjaan. Jika pekerjaan memiliki lebih banyak hasil, pekerjaan masih dihapus, tetapi Receive-Job menampilkan pesan.

Parameter ini hanya berfungsi pada jenis pekerjaan kustom. Ini dirancang untuk instans jenis pekerjaan yang menyimpan pekerjaan atau jenis di luar sesi, seperti instans pekerjaan terjadwal.

Parameter ini tidak dapat digunakan tanpa parameter Tunggu .

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-ComputerName

Menentukan sekumpulan nama-nama komputer.

Parameter ini memilih dari antara hasil pekerjaan yang disimpan di komputer lokal. Ini tidak mendapatkan data untuk pekerjaan yang dijalankan di komputer jarak jauh. Untuk mendapatkan hasil pekerjaan yang disimpan di komputer jarak jauh, gunakan cmdlet Invoke-Command untuk menjalankan perintah Receive-Job dari jarak jauh.

Properti parameter

Jenis:

String[]

Nilai default:All computers available
Mendukung wildcard:True
DontShow:False
Alias:Cn

Set parameter

ComputerName
Position:1
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-Force

Menunjukkan bahwa cmdlet ini terus menunggu apakah pekerjaan berada dalam status Ditangguhkan atau Terputus. Secara default, parameter TungguReceive-Job mengembalikan, atau mengakhiri penantian, saat pekerjaan berada di salah satu status berikut:

  • Selesai
  • Kegagalan
  • Dihentikan
  • Ditangguhkan
  • Terputus.

Parameter Force hanya valid ketika parameter Tunggu juga digunakan dalam perintah.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Id

Menentukan array ID. Cmdlet ini mendapatkan hasil pekerjaan dengan ID yang ditentukan.

ID adalah bilangan bulat yang secara unik mengidentifikasi pekerjaan dalam sesi saat ini. lebih mudah diingat dan di ketik daripada ID instans, tetapi hanya unik dalam sesi saat ini. Anda dapat mengetik satu atau beberapa ID yang dipisahkan oleh koma. Untuk menemukan ID pekerjaan, gunakan Get-Job.

Properti parameter

Jenis:

Int32[]

Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

SessionIdParameterSet
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-InstanceId

Menentukan sebuah array dari ID instans. Cmdlet ini mendapatkan hasil pekerjaan dengan ID instans yang ditentukan.

ID instans adalah GUID yang secara unik mengidentifikasi tugas pada komputer. Untuk menemukan ID instans pekerjaan, gunakan cmdlet Get-Job.

Properti parameter

Jenis:

Guid[]

Nilai default:All instances
Mendukung wildcard:False
DontShow:False

Set parameter

InstanceIdParameterSet
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-Job

Menentukan pekerjaan yang hasilnya sedang diambil.

Masukkan variabel yang berisi pekerjaan atau perintah yang mendapatkan pekerjaan. Anda juga dapat menyalurkan objek pekerjaan ke Receive-Job.

Properti parameter

Jenis:

Job[]

Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

Location
Position:0
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False
Session
Position:0
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False
ComputerName
Position:0
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-Keep

Menunjukkan bahwa cmdlet ini menyimpan data aliran agregat dalam sistem, bahkan setelah Anda menerimanya. Secara default, data aliran agregat dihapus setelah dilihat dengan Receive-Job.

Menutup sesi, atau menghapus pekerjaan dengan cmdlet Remove-Job juga menghapus data aliran agregat.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Location

Menentukan array lokasi. Cmdlet ini hanya mendapatkan hasil pekerjaan di lokasi yang ditentukan.

Properti parameter

Jenis:

String[]

Nilai default:All locations
Mendukung wildcard:False
DontShow:False

Set parameter

Location
Position:1
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Name

Menentukan array nama yang mudah diingat. Cmdlet ini mendapatkan hasil pekerjaan yang memiliki nama yang ditentukan. Karakter kartubebas didukung.

Properti parameter

Jenis:

String[]

Nilai default:None
Mendukung wildcard:True
DontShow:False

Set parameter

NameParameterSet
Position:0
Wajib:True
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-NoRecurse

Menunjukkan bahwa cmdlet ini hanya mendapatkan hasil dari pekerjaan yang ditentukan. Secara default, Receive-Job juga mendapatkan hasil dari semua pekerjaan anak dari pekerjaan yang ditentukan.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-Session

Menentukan array sesi. Cmdlet ini mendapatkan hasil pekerjaan yang dijalankan dalam sesi PowerShell yang ditentukan (PSSession). Masukkan variabel yang berisi PSSession atau perintah yang mendapatkanPSSession , seperti perintah .

Properti parameter

Jenis:

PSSession[]

Nilai default:All sessions
Mendukung wildcard:False
DontShow:False

Set parameter

Session
Position:1
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:True
Nilai dari argumen yang tersisa:False

-Wait

Menunjukkan bahwa cmdlet ini menekan prompt perintah hingga semua hasil pekerjaan diterima. Secara default, Receive-Job segera mengembalikan hasil yang tersedia.

Secara default, parameter Tunggu menunggu hingga pekerjaan berada di salah satu status berikut:

  • Selesai
  • Kegagalan
  • Dihentikan
  • Ditangguhkan
  • Terputus

Untuk mengarahkan parameter Tunggu untuk terus menunggu apakah status pekerjaan Ditangguhkan atau Terputus, gunakan parameter Force bersama dengan parameter Tunggu.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Properti parameter

Jenis:SwitchParameter
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-WriteEvents

Menunjukkan bahwa cmdlet ini melaporkan perubahan dalam status pekerjaan saat menunggu pekerjaan selesai.

Parameter ini hanya valid ketika parameter Wait digunakan dalam perintah dan parameter Keep dihilangkan.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

-WriteJobInResults

Menunjukkan bahwa cmdlet ini mengembalikan objek pekerjaan diikuti oleh hasilnya.

Parameter ini hanya valid ketika parameter Wait digunakan dalam perintah dan parameter Keep dihilangkan.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Properti parameter

Jenis:SwitchParameter
Nilai default:False
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:Named
Wajib:False
Nilai dari alur:False
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

Input

Job

Anda dapat menyalurkan objek pekerjaan ke cmdlet ini.

Output

PSObject

Cmdlet ini mengembalikan hasil perintah dalam pekerjaan.

Catatan

PowerShell menyertakan alias berikut untuk Receive-Job:

  • Semua platform:
    • rcjb