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
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
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 Receive-Job mengembalikan, atau mengakhiri penantian, saat pekerjaan berada di salah satu status berikut:
- Selesai
- Kegagalan
- Dihentikan
- Ditangguhkan
- Terputus.
Parameter Force
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
Properti parameter
| Jenis: | |
| 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
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