Wait-Job
Menunggu hingga satu atau semua pekerjaan PowerShell yang berjalan dalam sesi berada dalam keadaan dihentikan.
Sintaks
SessionIdParameterSet (Default)
Wait-Job
[-Id] <Int32[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
JobParameterSet
Wait-Job
[-Job] <Job[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
NameParameterSet
Wait-Job
[-Name] <String[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
InstanceIdParameterSet
Wait-Job
[-InstanceId] <Guid[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
StateParameterSet
Wait-Job
[-State] <JobState>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
FilterParameterSet
Wait-Job
[-Filter] <Hashtable>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
Deskripsi
cmdlet Wait-Job menunggu pekerjaan mencapai status akhir sebelum melanjutkan eksekusi.
Status penghentian adalah:
- Selesai
- Kegagalan
- Dihentikan
- Ditangguhkan
- Terputus
Anda dapat menunggu hingga pekerjaan tertentu, atau semua pekerjaan berada dalam keadaan selesai. Anda juga dapat mengatur waktu tunggu maksimum untuk pekerjaan menggunakan parameter Batas Waktu, atau menggunakan parameter Force untuk menunggu pekerjaan di status Suspended atau Disconnected.
Ketika perintah dalam pekerjaan selesai, Wait-Job mengembalikan objek pekerjaan dan melanjutkan eksekusi.
Anda dapat menggunakan cmdlet Wait-Job untuk menunggu pekerjaan dimulai dengan menggunakan cmdlet Start-Job atau parameter AsJob dari cmdlet Invoke-Command. Untuk informasi selengkapnya tentang pekerjaan, lihat about_Jobs.
Mulai Windows PowerShell 3.0, cmdlet Wait-Job juga menunggu jenis pekerjaan kustom, seperti pekerjaan alur kerja dan instans pekerjaan terjadwal. Untuk memungkinkan Wait-Job menunggu pekerjaan tipe tertentu, impor modul yang mendukung tipe pekerjaan kustom ke dalam sesi sebelum Anda menjalankan cmdlet Get-Job, baik dengan menggunakan cmdlet Import-Module atau mendapatkan cmdlet dalam modul tersebut. Untuk informasi tentang jenis pekerjaan kustom tertentu, lihat dokumentasi fitur jenis pekerjaan kustom.
Contoh
Contoh 1: Tunggu semua pekerjaan
Get-Job | Wait-Job
Perintah ini menunggu semua pekerjaan yang berjalan dalam sesi untuk selesai.
Contoh 2: Tunggu pekerjaan dimulai di komputer jarak jauh dengan menggunakan Start-Job
$s = New-PSSession Server01, Server02, Server03
Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
$done.Count
3
Contoh ini menunjukkan cara menggunakan cmdlet Wait-Job dengan menggunakan cmdlet Start-Job pada pekerjaan yang dimulai di komputer jarak jauh. Perintah Start-Job dan Wait-Job dikirimkan ke komputer jarak jauh dengan menggunakan cmdlet Invoke-Command.
Contoh ini menggunakan Wait-Job untuk menentukan apakah perintah Get-Date yang berjalan sebagai tugas di tiga komputer berbeda sudah selesai.
Perintah pertama membuat sesi Windows PowerShell (PSSession) pada masing-masing dari tiga komputer jarak jauh dan menyimpannya dalam variabel $s.
Perintah kedua menggunakan Invoke-Command untuk menjalankan Start-Job di masing-masing dari tiga sesi di $s.
Semua pekerjaan diberi nama Date1.
Perintah ketiga menggunakan Invoke-Command untuk menjalankan Wait-Job. Perintah ini menunggu pekerjaan Date1 pada setiap komputer selesai. Ini menyimpan koleksi yang dihasilkan (array) dari objek tugas dalam variabel $done.
Perintah keempat menggunakan properti hitungan dari array objek tugas dalam variabel pada $done untuk menentukan berapa banyak dari pekerjaan yang selesai.
Contoh 3: Tentukan kapan pekerjaan pertama selesai
$s = New-PSSession -ComputerName (Get-Content -Path .\Machines.txt)
$c = 'Get-EventLog -LogName System | Where-Object {$PSItem.EntryType -eq "error" --and $PSItem.Source -eq "LSASRV"} | Out-File -FilePath Errors.txt'
Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}
Contoh ini menggunakan parameter dari Wait-Job untuk menentukan kapan pekerjaan pertama dari banyak pekerjaan yang berjalan dalam sesi saat ini berada dalam status mengakhiri. Ini juga menunjukkan cara menggunakan cmdlet Wait-Job untuk menunggu pekerjaan jarak jauh selesai.
Perintah pertama membuat PSSession pada setiap komputer yang tercantum dalam file Machines.txt dan menyimpan objek PSSession dalam variabel $s. Perintah menggunakan cmdlet Get-Content untuk mendapatkan konten file. Perintah Get-Content diapit dalam tanda kurung untuk memastikan bahwa perintah berjalan sebelum perintah New-PSSession.
Perintah kedua menyimpan string perintah Get-EventLog, dalam tanda kutip, dalam variabel $c.
Perintah ketiga menggunakan cmdlet Invoke-Command untuk menjalankan Start-Job di setiap sesi dalam $s.
Perintah Start-Job memulai pekerjaan yang menjalankan perintah Get-EventLog dalam variabel $c.
Perintah menggunakan pengubah cakupan Using: untuk menunjukkan bahwa variabel $c ditentukan pada komputer lokal. Pengubah cakupan Using: diperkenalkan di Windows PowerShell 3.0. Untuk selengkapnya mengenai pengubah cakupan Using:, lihat about_Remote_Variables.
Perintah keempat menggunakan Invoke-Command untuk menjalankan perintah Wait-Job dalam sesi. Ini menggunakan parameter apa pun untuk menunggu sampai pekerjaan pertama di komputer jarak jauh dalam status selesai.
Contoh 4: Mengatur waktu tunggu untuk pekerjaan di komputer jarak jauh
PS> $s = New-PSSession -ComputerName Server01, Server02, Server03
PS> $jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
PS> $done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}
PS>
Contoh ini menunjukkan cara menggunakan parameter TimeoutWait-Job untuk mengatur waktu tunggu maksimum untuk pekerjaan yang berjalan di komputer jarak jauh.
Perintah pertama membuat PSSession pada masing-masing dari tiga komputer jarak jauh (Server01, Server02, dan Server03), lalu menyimpan objek PSSession dalam variabel $s.
Perintah kedua menggunakan Invoke-Command untuk menjalankan Start-Job di setiap objek PSSession di $s. Ini menyimpan objek pekerjaan yang dihasilkan dalam variabel $jobs.
Perintah ketiga menggunakan Invoke-Command untuk menjalankan Wait-Job di setiap sesi di $s. Perintah Wait-Job menentukan apakah semua perintah telah selesai dalam waktu 30 detik. Ini menggunakan parameter Batas Waktu dengan nilai 30 untuk menetapkan waktu tunggu maksimum, lalu menyimpan hasil perintah dalam variabel $done.
Dalam hal ini, setelah 30 detik, hanya perintah pada komputer Server02 yang telah selesai.
Wait-Job mengakhiri penantian, mengembalikan objek yang mewakili pekerjaan yang selesai, dan menampilkan prompt perintah.
Variabel $done berisi objek pekerjaan yang mewakili pekerjaan yang berjalan di Server02.
Contoh 5: Tunggu hingga salah satu dari beberapa pekerjaan selesai
Wait-Job -Id 1, 2, 5 -Any
Perintah ini mengidentifikasi tiga pekerjaan berdasarkan ID mereka dan menunggu hingga salah satu di antaranya berada dalam status penghentian. Eksekusi berlanjut ketika pekerjaan pertama selesai.
Contoh 6: Tunggu beberapa waktu, lalu izinkan pekerjaan untuk melanjutkan di latar belakang
Wait-Job -Name "DailyLog" -Timeout 120
Perintah ini menunggu 120 detik (dua menit) hingga pekerjaan DailyLog selesai. Jika pekerjaan tidak selesai dalam dua menit ke depan, eksekusi berlanjut, dan pekerjaan terus berjalan di latar belakang.
Contoh 7: Tunggu pekerjaan berdasarkan nama
Wait-Job -Name "Job3"
Perintah ini menggunakan nama pekerjaan untuk mengidentifikasi pekerjaan yang harus ditunggu.
Contoh 8: Tunggu pekerjaan yang dimulai pada komputer lokal dengan Start-Job
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1 | Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
Contoh ini menunjukkan cara menggunakan cmdlet Wait-Job dengan menggunakan Start-Jobuntuk pekerjaan yang dimulai di komputer lokal.
Perintah ini memulai pekerjaan yang mendapatkan file skrip Windows PowerShell yang ditambahkan atau diperbarui dalam seminggu terakhir.
Perintah pertama menggunakan Start-Job untuk memulai pekerjaan di komputer lokal. Pekerjaan menjalankan perintah Get-ChildItem yang mendapatkan semua file yang memiliki ekstensi nama file .ps1 yang ditambahkan atau diperbarui dalam seminggu terakhir.
Perintah ketiga menggunakan Wait-Job untuk menunggu hingga pekerjaan dalam status penghentian. Ketika pekerjaan selesai, perintah menampilkan objek pekerjaan, yang berisi informasi tentang pekerjaan.
Contoh 9: Tunggu pekerjaan dimulai di komputer jarak jauh dengan menggunakan Invoke-Command
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
Contoh ini menunjukkan cara menggunakan Wait-Job untuk menjalankan pekerjaan di komputer jarak jauh dengan menggunakan parameter AsJob Invoke-Command. Saat menggunakan AsJob, pekerjaan dibuat di komputer lokal dan hasilnya secara otomatis dikembalikan ke komputer lokal, meskipun pekerjaan berjalan di komputer jarak jauh.
Contoh ini menggunakan Wait-Job untuk menentukan apakah perintah Get-Process yang dijalankan dalam sesi di tiga komputer jarak jauh berada dalam keadaan mengakhiri.
Perintah pertama membuat objek PSSession di tiga komputer dan menyimpannya dalam variabel $s.
Perintah kedua menggunakan Invoke-Command untuk menjalankan Get-Process di masing-masing dari tiga sesi di $s.
Perintah menggunakan parameter AsJob untuk menjalankan perintah secara asinkron sebagai tugas. Perintah mengembalikan objek pekerjaan, sama seperti pekerjaan yang dimulai dengan menggunakan Start-Job, dan objek pekerjaan disimpan dalam variabel $j.
Perintah ketiga menggunakan operator alur (|) untuk mengirim objek pekerjaan dalam $j ke cmdlet Wait-Job. Perintah Invoke-Command tidak diperlukan dalam kasus ini, karena pekerjaan berada di komputer lokal.
Contoh 10: Tunggu pekerjaan yang memiliki ID
Get-Job
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True localhost,Server01.. Get-Service
4 Job4 Completed True localhost dir | where
Wait-Job -Id 1
Perintah ini menunggu tugas dengan nilai ID 1.
Parameter
-Any
Menunjukkan bahwa cmdlet ini mengembalikan objek pekerjaan dan melanjutkan eksekusi ketika pekerjaan selesai. Secara default, Wait-Job menunggu hingga semua pekerjaan yang ditentukan selesai sebelum menampilkan perintah.
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 |
-Filter
Menentukan tabel hash dari kondisi. Cmdlet ini menunggu pekerjaan yang memenuhi semua kondisi dalam tabel hash. Masukkan tabel hash di mana kunci adalah properti pekerjaan dan nilainya adalah nilai properti pekerjaan.
Parameter ini hanya berfungsi pada jenis pekerjaan kustom, seperti pekerjaan alur kerja dan pekerjaan terjadwal. Ini tidak berfungsi pada pekerjaan standar, seperti yang dibuat dengan menggunakan cmdlet Start-Job. Untuk informasi tentang dukungan untuk parameter ini, lihat topik bantuan untuk jenis pekerjaan.
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Properti parameter
| Jenis: | Hashtable |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
FilterParameterSet
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Force
Menunjukkan bahwa cmdlet ini terus menunggu pekerjaan dalam status Ditangguhkan atau Terputus. Secara default, Wait-Job mengembalikan, atau mengakhiri penantian, saat pekerjaan berada di salah satu status berikut:
- Selesai
- Kegagalan
- Dihentikan
- Ditangguhkan
- Terputus
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 |
-Id
Menentukan daftar ID pekerjaan yang dinantikan oleh cmdlet ini.
ID adalah bilangan bulat yang secara unik mengidentifikasi pekerjaan dalam sesi saat ini. Lebih mudah diingat dan ditik daripada ID instans, tetapi hanya unik dalam sesi saat ini. Anda dapat mengetik satu atau beberapa ID, dipisahkan oleh koma. Untuk menemukan ID pekerjaan, ketik 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 array ID instance dari pekerjaan yang ditunggu cmdlet ini. Defaultnya adalah semua pekerjaan.
ID instans adalah GUID yang secara unik mengidentifikasi tugas pada komputer. Untuk menemukan ID instance dari sebuah pekerjaan, gunakan Get-Job.
Properti parameter
| Jenis: | Guid[] |
| Nilai default: | None |
| 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 di mana cmdlet ini menunggu. Masukkan variabel yang berisi objek pekerjaan atau perintah yang mengambil objek pekerjaan. Anda juga dapat menggunakan operator alur untuk mengirim objek pekerjaan ke cmdlet Wait-Job. Secara default, Wait-Job menunggu semua pekerjaan yang dibuat dalam sesi saat ini.
Properti parameter
| Jenis: | Job[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
JobParameterSet
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Name
Menentukan nama pekerjaan yang ramah di mana cmdlet ini menunggu.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| 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 |
-State
Menentukan status pekerjaan. Cmdlet ini hanya menunggu pekerjaan dalam status yang ditentukan. Nilai yang dapat diterima untuk parameter ini adalah:
- Belum Mulai
- Berlari
- Selesai
- Kegagalan
- Dihentikan
- Diblokir
- Ditangguhkan
- Terputus
- Menangguhkan
- Berhenti
Untuk informasi selengkapnya tentang status tugas, lihat Enumerasi JobState.
Properti parameter
| Jenis: | JobState |
| Nilai default: | None |
| Nilai yang diterima: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
StateParameterSet
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | True |
| Nilai dari argumen yang tersisa: | False |
-Timeout
Menentukan waktu tunggu maksimum untuk setiap pekerjaan, dalam detik. Nilai default, -1, menunjukkan bahwa cmdlet menunggu hingga pekerjaan selesai. Waktu dimulai saat Anda mengirimkan perintah Wait-Job, bukan perintah Start-Job.
Jika waktu ini terlampaui, tunggu berakhir dan eksekusi berlanjut, bahkan jika pekerjaan masih berjalan. Perintah tidak menampilkan pesan kesalahan apa pun.
Properti parameter
| Jenis: | Int32 |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | TimeoutSec |
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
System.Management.Automation.RemotingJob
Anda dapat menyalurkan objek pekerjaan ke cmdlet ini.
Output
System.Management.Automation.PSRemotingJob
Cmdlet ini mengembalikan objek pekerjaan yang mewakili pekerjaan dalam status selesai. Jika tunggu berakhir karena nilai parameter Batas Waktu terlampaui, Wait-Job tidak mengembalikan objek apa pun.
Catatan
PowerShell menyertakan alias berikut untuk Wait-Job:
- Semua platform:
wjb
Secara default, Wait-Job mengembalikan, atau mengakhiri penantian, saat pekerjaan berada di salah satu status berikut:
- Selesai
- Kegagalan
- Dihentikan
- Ditangguhkan
- Terputus
Untuk mengarahkan Wait-Job untuk terus menunggu pekerjaan Ditangguhkan dan Terputus, gunakan parameter Force.