Receive-Job
Mendapatkan hasil pekerjaan latar belakang PowerShell dalam sesi saat ini.
Sintaks
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>]
Deskripsi
Receive-Job
Cmdlet mendapatkan hasil pekerjaan latar belakang PowerShell, seperti yang dimulai dengan menggunakan Start-Job
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.
Receive-Job
Cmdlet mendapatkan hasil yang telah dihasilkan pada saat Receive-Job
perintah 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 Receive-Job
perintah lagi tanpa parameter Keep , tutup sesi, atau gunakan Remove-Job
cmdlet untuk menghapus pekerjaan dari sesi.
Mulai dari 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 Receive-Job
Pekerjaan untuk mendapatkan hasil pekerjaan tertentu.
Perintah pertama memulai pekerjaan dengan Start-Job
dan menyimpan objek pekerjaan dalam $job
variabel.
Perintah kedua menggunakan Receive-Job
cmdlet 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 $job
variabel, dan menyalurkan pekerjaan ke Receive-Job
cmdlet. 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
AsJob 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 Start-Job
perintah 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
Catatan
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.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-ComputerName
Menentukan array 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 Invoke-Command
cmdlet untuk menjalankan Receive-Job
perintah dari jarak jauh.
Jenis: | String[] |
Alias: | Cn |
Position: | 1 |
Nilai default: | All computers available |
Diperlukan: | False |
Terima input alur: | True |
Terima karakter wildcard: | True |
-Force
Menunjukkan bahwa cmdlet ini terus menunggu jika pekerjaan dalam status Ditangguhkan atau Terputus . Secara default, parameter Receive-Job
Tunggu pengembalian, atau mengakhiri penantian, saat pekerjaan berada di salah satu status berikut:
- Selesai
- Gagal
- Dihentikan
- Ditangguhkan
- Terputus.
Parameter Paksa hanya valid ketika parameter Tunggu juga digunakan dalam perintah .
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | 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
.
Jenis: | Int32[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-InstanceId
Menentukan array ID instans. Cmdlet ini mendapatkan hasil pekerjaan dengan ID instans yang ditentukan.
ID instans adalah GUID yang secara unik mengidentifikasi pekerjaan di komputer. Untuk menemukan ID instans pekerjaan, gunakan Get-Job
cmdlet .
Jenis: | Guid[] |
Position: | 0 |
Nilai default: | All instances |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | 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
.
Jenis: | Job[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | 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 Remove-Job
cmdlet juga menghapus data aliran agregat.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Location
Menentukan array lokasi. Cmdlet ini hanya mendapatkan hasil pekerjaan di lokasi yang ditentukan.
Jenis: | String[] |
Position: | 1 |
Nilai default: | All locations |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Name
Menentukan array nama yang mudah diingat. Cmdlet ini mendapatkan hasil pekerjaan yang memiliki nama yang ditentukan. Karakter kartubebas didukung.
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | True |
-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.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Session
Menentukan array sesi. Cmdlet ini mendapatkan hasil pekerjaan yang dijalankan dalam sesi PowerShell (PSSession) yang ditentukan. Masukkan variabel yang berisi PSSession atau perintah yang mendapatkan PSSession, seperti Get-PSSession
perintah.
Jenis: | PSSession[] |
Position: | 1 |
Nilai default: | All sessions |
Diperlukan: | False |
Terima input alur: | True |
Terima karakter wildcard: | 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
- Gagal
- Dihentikan
- Ditangguhkan
- Terputus
Untuk mengarahkan parameter Tunggu untuk terus menunggu jika status pekerjaan Ditangguhkan atau Terputus, gunakan parameter Paksa bersama dengan parameter Tunggu .
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-WriteEvents
Menunjukkan bahwa cmdlet ini melaporkan perubahan dalam status pekerjaan saat menunggu pekerjaan selesai.
Parameter ini hanya valid ketika parameter Tunggu digunakan dalam perintah dan parameter Keep dihilangkan.
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-WriteJobInResults
Menunjukkan bahwa cmdlet ini mengembalikan objek pekerjaan diikuti oleh hasilnya.
Parameter ini hanya valid ketika parameter Tunggu digunakan dalam perintah dan parameter Keep dihilangkan.
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | False |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan objek pekerjaan ke cmdlet ini.
Output
Cmdlet ini mengembalikan hasil perintah dalam pekerjaan.
Catatan
Windows PowerShell menyertakan alias berikut untuk Receive-Job
:
rcjb