Wait-Job
Menunggu hingga satu atau semua pekerjaan PowerShell yang berjalan dalam sesi berada dalam status mengakhiri.
Sintaks
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Id] <Int32[]>
[<CommonParameters>]
Wait-Job
[-Job] <Job[]>
[-Any]
[-Timeout <Int32>]
[-Force]
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Name] <String[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-InstanceId] <Guid[]>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-State] <JobState>
[<CommonParameters>]
Wait-Job
[-Any]
[-Timeout <Int32>]
[-Force]
[-Filter] <Hashtable>
[<CommonParameters>]
Deskripsi
Wait-Job
Cmdlet menunggu pekerjaan berada dalam status berakhir sebelum melanjutkan eksekusi.
Status penghentian adalah:
- Selesai
- Gagal
- Dihentikan
- Ditangguhkan
- Terputus
Anda dapat menunggu hingga pekerjaan tertentu, atau semua pekerjaan dalam status mengakhiri. Anda juga dapat mengatur waktu tunggu maksimum untuk pekerjaan menggunakan parameter Batas Waktu , atau menggunakan parameter Paksa untuk menunggu pekerjaan di Suspended
status atau Disconnected
.
Ketika perintah dalam pekerjaan selesai, Wait-Job
mengembalikan objek pekerjaan dan melanjutkan eksekusi.
Anda dapat menggunakan Wait-Job
cmdlet untuk menunggu pekerjaan dimulai dengan menggunakan Start-Job
cmdlet atau parameter AsJob cmdlet Invoke-Command
. Untuk informasi selengkapnya tentang pekerjaan, lihat about_Jobs.
Mulai Windows PowerShell 3.0, Wait-Job
cmdlet juga menunggu jenis pekerjaan kustom, seperti pekerjaan alur kerja dan instans pekerjaan terjadwal. Untuk mengaktifkan Wait-Job
menunggu pekerjaan dari jenis tertentu, impor modul yang mendukung jenis pekerjaan kustom ke dalam sesi sebelum Anda menjalankan Get-Job
cmdlet, baik dengan menggunakan Import-Module
cmdlet atau dengan menggunakan atau mendapatkan cmdlet dalam modul. 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 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 Wait-Job
cmdlet dengan pekerjaan yang dimulai pada komputer jarak jauh dengan menggunakan Start-Job
cmdlet. Perintah Start-Job
dan Wait-Job
dikirimkan ke komputer jarak jauh dengan menggunakan Invoke-Command
cmdlet.
Contoh ini digunakan Wait-Job
untuk menentukan apakah perintah yang Get-Date
berjalan sebagai pekerjaan pada tiga komputer berbeda selesai.
Perintah pertama membuat sesi Windows PowerShell (PSSession) pada masing-masing dari tiga komputer jarak jauh dan menyimpannya dalam $s
variabel.
Perintah kedua menggunakan Invoke-Command
untuk berjalan 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 Date1
pekerjaan pada setiap komputer selesai. Ini menyimpan koleksi (array) objek pekerjaan yang $done
dihasilkan dalam variabel.
Perintah keempat menggunakan properti Hitung dari array objek pekerjaan dalam $done
variabel untuk menentukan berapa banyak 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 Apa pun untuk Wait-Job
menentukan kapan pekerjaan pertama dari banyak pekerjaan yang berjalan dalam sesi saat ini berada dalam status mengakhiri. Ini juga menunjukkan cara menggunakan Wait-Job
cmdlet untuk menunggu pekerjaan jarak jauh selesai.
Perintah pertama membuat PSSession pada setiap komputer yang tercantum dalam file Machines.txt dan menyimpan objek PSSession dalam $s
variabel. Perintah menggunakan Get-Content
cmdlet untuk mendapatkan konten file. Perintah Get-Content
diapit dalam tanda kurung untuk memastikan bahwa perintah berjalan sebelum New-PSSession
perintah.
Perintah kedua menyimpan Get-EventLog
string perintah, dalam tanda kutip, dalam $c
variabel .
Perintah ketiga menggunakan Invoke-Command
cmdlet untuk dijalankan Start-Job
di setiap sesi di $s
.
Perintah Start-Job
memulai pekerjaan yang menjalankan Get-EventLog
perintah dalam $c
variabel.
Perintah menggunakan pengubah menggunakan pengubah cakupan untuk menunjukkan bahwa $c
variabel ditentukan pada komputer lokal. Pengubah menggunakan lingkup diperkenalkan di Windows PowerShell 3.0. Untuk informasi selengkapnya tentang Pengubah menggunakan lingkup, lihat about_Remote_Variables.
Perintah keempat menggunakan Invoke-Command
untuk menjalankan Wait-Job
perintah dalam sesi. Ini menggunakan parameter Apa pun untuk menunggu sampai pekerjaan pertama pada komputer jarak jauh mengakhiri status.
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 Wait-Job
Batas Waktu 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 $s
variabel.
Perintah kedua menggunakan Invoke-Command
untuk berjalan Start-Job
di setiap objek PSSession di $s
. Ini menyimpan objek pekerjaan yang dihasilkan dalam $jobs
variabel .
Perintah ketiga menggunakan Invoke-Command
untuk berjalan Wait-Job
di setiap sesi di $s
. Perintah Wait-Job
menentukan apakah semua perintah telah selesai dalam waktu 30 detik. Ini menggunakan parameter Timeout dengan nilai 30 untuk menetapkan waktu tunggu maksimum, lalu menyimpan hasil perintah dalam $done
variabel.
Dalam hal ini, setelah 30 detik, hanya perintah pada komputer Server02 yang telah selesai. Wait-Job
mengakhiri penantian, mengembalikan objek yang mewakili pekerjaan yang telah 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 dengan ID mereka dan menunggu sampai salah satu dari mereka berada dalam status mengakhiri. Eksekusi berlanjut ketika pekerjaan pertama selesai.
Contoh 6: Tunggu periode, 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 akan menunggu.
Contoh 8: Tunggu pekerjaan di komputer lokal dimulai 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 Wait-Job
cmdlet dengan pekerjaan yang dimulai di komputer lokal dengan menggunakan Start-Job
.
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 Get-ChildItem
perintah 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 mengakhiri. 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
dengan pekerjaan yang dimulai pada komputer jarak jauh dengan menggunakan parameter AsJob dari 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 digunakan Wait-Job
untuk menentukan apakah perintah yang Get-Process
berjalan dalam sesi pada tiga komputer jarak jauh dalam status mengakhiri.
Perintah pertama membuat objek PSSession di tiga komputer dan menyimpannya dalam $s
variabel.
Perintah kedua menggunakan Invoke-Command
untuk berjalan Get-Process
di masing-masing dari tiga sesi di $s
.
Perintah menggunakan parameter AsJob untuk menjalankan perintah secara asinkron sebagai pekerjaan. Perintah mengembalikan objek pekerjaan, sama seperti pekerjaan yang dimulai dengan menggunakan Start-Job
, dan objek pekerjaan disimpan dalam $j
variabel .
Perintah ketiga menggunakan operator alur (|
) untuk mengirim objek $j
pekerjaan ke Wait-Job
cmdlet. 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 pekerjaan 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.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Filter
Menentukan tabel kondisi hash. 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 Start-Job
cmdlet. Untuk informasi tentang dukungan untuk parameter ini, lihat topik bantuan untuk jenis pekerjaan.
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Jenis: | Hashtable |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | 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
- Gagal
- Dihentikan
- Ditangguhkan
- Terputus
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 |
-Id
Menentukan array ID pekerjaan yang cmdlet ini tunggu.
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
.
Jenis: | Int32[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-InstanceId
Menentukan array ID instans pekerjaan yang cmdlet ini menunggu. Defaultnya adalah semua pekerjaan.
ID instans adalah GUID yang secara unik mengidentifikasi pekerjaan di komputer. Untuk menemukan ID instans pekerjaan, gunakan Get-Job
.
Jenis: | Guid[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Job
Menentukan pekerjaan di mana cmdlet ini menunggu. Masukkan variabel yang berisi objek pekerjaan atau perintah yang mendapatkan objek pekerjaan. Anda juga dapat menggunakan operator alur untuk mengirim objek pekerjaan ke Wait-Job
cmdlet. Secara default, Wait-Job
menunggu semua pekerjaan yang dibuat dalam sesi saat ini.
Jenis: | Job[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-Name
Menentukan nama pekerjaan yang ramah di mana cmdlet ini menunggu.
Jenis: | String[] |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
-State
Menentukan status pekerjaan. Cmdlet ini hanya menunggu pekerjaan dalam status yang ditentukan. Nilai yang dapat diterima untuk parameter ini adalah:
- Belum Dimulai
- Sedang berjalan
- Selesai
- Gagal
- Dihentikan
- Terblokir
- Ditangguhkan
- Terputus
- Menangguhkan
- Menghentikan
Untuk informasi selengkapnya tentang status pekerjaan, lihat Enumerasi JobState.
Jenis: | JobState |
Nilai yang diterima: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | 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 Wait-Job
perintah, bukan Start-Job
perintah .
Jika waktu ini terlampaui, tunggu berakhir dan eksekusi berlanjut, bahkan jika pekerjaan masih berjalan. Perintah tidak menampilkan pesan kesalahan apa pun.
Jenis: | Int32 |
Alias: | TimeoutSec |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
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 mengakhiri. 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
- Gagal
- Dihentikan
- Ditangguhkan
- Terputus
Untuk mengarahkan Wait-Job
untuk terus menunggu pekerjaan Ditangguhkan dan Terputus, gunakan parameter Paksa .