Wait-Job
Oturumda çalışan PowerShell işlerinin biri veya tümü sonlandırıcı duruma gelene kadar bekler.
Sözdizimi
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>]
Description
Cmdlet yürütmeye Wait-Job
devam etmeden önce işin sonlandırıcı durumda olmasını bekler.
Sonlandırıcı durumlar şunlardır:
- Tamamlandı
- Başarısız
- Durduruldu
- Askıya alındı
- Bağlantı kesildi
Belirtilen iş veya tüm işler sonlandırıcı duruma gelene kadar bekleyebilirsiniz. Ayrıca Timeout parametresini kullanarak iş için en uzun bekleme süresini ayarlayabilir veya veya Disconnected
durumlarında bir işi beklemek için Zorla parametresini Suspended
kullanabilirsiniz.
İşteki komutlar tamamlandığında, Wait-Job
bir iş nesnesi döndürür ve yürütmeye devam eder.
cmdlet'ini Wait-Job
veya cmdlet'in AsJob parametresini kullanarak Start-Job
işlerin başlamasını beklemek için cmdlet'ini Invoke-Command
kullanabilirsiniz. İşler hakkında daha fazla bilgi için bkz . about_Jobs.
Windows PowerShell 3.0'dan Wait-Job
başlayarak, cmdlet iş akışı işleri ve zamanlanmış işlerin örnekleri gibi özel iş türlerini de bekler. Belirli bir türdeki işleri beklemeyi etkinleştirmek Wait-Job
için, cmdlet'ini çalıştırmadan Get-Job
önce, cmdlet'ini kullanarak Import-Module
veya modülde bir cmdlet'i kullanarak veya alarak özel iş türünü destekleyen modülü oturuma aktarın. Belirli bir özel iş türü hakkında bilgi için özel iş türü özelliğinin belgelerine bakın.
Örnekler
Örnek 1: Tüm işleri bekleme
Get-Job | Wait-Job
Bu komut, oturumda çalışan tüm işlerin tamamlanmasını bekler.
Örnek 2: Start-Job kullanarak uzak bilgisayarlarda işlerin başlatılmasını bekleyin
$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
Bu örnek, cmdlet'ini Wait-Job
kullanarak uzak bilgisayarlarda başlatılan işlerle cmdlet'in Start-Job
nasıl kullanılacağını gösterir. Hem hem de Start-Job
Wait-Job
komutları cmdlet'i kullanılarak Invoke-Command
uzak bilgisayara gönderilir.
Bu örnek, üç farklı bilgisayarda iş olarak çalışan bir Get-Date
komutun tamamlanıp tamamlanmadığını belirlemek için kullanırWait-Job
.
İlk komut, üç uzak bilgisayarın her birinde bir Windows PowerShell oturumu (PSSession) oluşturur ve bunları değişkende $s
depolar.
İkinci komut, içindeki üç oturumun $s
her birinde çalıştırmak Start-Job
için kullanırInvoke-Command
.
Tüm işler Date1 olarak adlandırılır.
Üçüncü komut komutunu çalıştırmak Wait-Job
için kullanırInvoke-Command
. Bu komut, Date1
her bilgisayardaki işlerin tamamlanmasını bekler. Değişkende iş nesnelerinin $done
elde edilen koleksiyonunu (dizisi) depolar.
Dördüncü komut, iş nesnelerinin değişkenindeki $done
dizisinin Count özelliğini kullanarak işlerin kaçının bittiğini belirler.
Örnek 3: İlk işin ne zaman biteceğini belirleme
$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}
Bu örnek, geçerli oturumda çalışan birçok işin ilkinin sonlandırıcı durumda olduğunu belirlemek için Any parametresini Wait-Job
kullanır. Ayrıca, uzak işlerin bitmesini beklemek için cmdlet'in nasıl kullanılacağını Wait-Job
gösterir.
İlk komut, Machines.txt dosyasında listelenen bilgisayarların her birinde bir PSSession oluşturur ve PSSession nesnelerini değişkende $s
depolar. komutu, dosyanın içeriğini almak için cmdlet'ini kullanır Get-Content
. Get-Content
Komut, komut öncesinde New-PSSession
çalıştığından emin olmak için parantez içine alınır.
İkinci komut, değişkeninde tırnak içinde $c
bir Get-EventLog
komut dizesi depolar.
Üçüncü komut, içindeki oturumların her birinde çalıştırmak Start-Job
için cmdlet'ini $s
kullanırInvoke-Command
.
komutu, Start-Job
değişkeninde $c
komutunu çalıştıran Get-EventLog
bir iş başlatır.
komutu, değişkenin yerel bilgisayarda tanımlandığını $c
belirtmek için Using scope değiştiricisini kullanır. Using scope değiştiricisi Windows PowerShell 3.0'da kullanıma sunulmuştur. Kapsam değiştirici kullanma hakkında daha fazla bilgi için bkz. about_Remote_Variables.
Dördüncü komut, oturumlarda bir Wait-Job
komut çalıştırmak için kullanırInvoke-Command
. Uzak bilgisayarlardaki ilk işin sonlandırıcı duruma gelmesini beklemek için Any parametresini kullanır.
Örnek 4: Uzak bilgisayarlarda işler için bekleme süresi ayarlama
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>
Bu örnekte, uzak bilgisayarlarda çalışan işler için en uzun bekleme süresini ayarlamak için zaman aşımı parametresinin Wait-Job
nasıl kullanılacağı gösterilmektedir.
İlk komut, üç uzak bilgisayarın her birinde (Server01, Server02 ve Server03) bir PSSession oluşturur ve ardından PSSession nesnelerini değişkende $s
depolar.
İkinci komut, içindeki PSSession nesnelerinin $s
her birinde çalıştırmak Start-Job
için kullanırInvoke-Command
. Sonuçta elde edilen iş nesnelerini değişkende $jobs
depolar.
Üçüncü komut, içindeki oturumların $s
her birinde çalıştırmak Wait-Job
için kullanırInvoke-Command
. Wait-Job
komutu, tüm komutların 30 saniye içinde tamamlanıp tamamlanmadığını belirler. Maksimum bekleme süresini oluşturmak için 30 değerine sahip Timeout parametresini kullanır ve ardından komutun sonuçlarını değişkende $done
depolar.
Bu durumda, 30 saniye sonra yalnızca Server02 bilgisayarındaki komut tamamlanır. Wait-Job
beklemeyi sonlandırır, tamamlanan işi temsil eden nesneyi döndürür ve komut istemini görüntüler.
değişkeni, $done
Server02'de çalıştıran işi temsil eden bir iş nesnesi içerir.
Örnek 5: Birkaç işten biri bitene kadar bekleyin
Wait-Job -id 1,2,5 -Any
Bu komut, kimliklerine göre üç işi tanımlar ve herhangi biri sonlandırıcı duruma gelene kadar bekler. İlk iş tamamlandığında yürütme devam eder.
Örnek 6: Bir süre bekleyin, ardından işin arka planda devam etmesine izin verin
Wait-Job -Name "DailyLog" -Timeout 120
Bu komut, DailyLog işinin bitmesini 120 saniye (iki dakika) bekler. İş sonraki iki dakika içinde tamamlanmazsa yürütme devam eder ve iş arka planda çalışmaya devam eder.
Örnek 7: ada göre bir iş bekleyin
Wait-Job -Name "Job3"
Bu komut, bekleyebileceğiniz işi tanımlamak için iş adını kullanır.
Örnek 8: Start-Job ile başlatılan yerel bilgisayardaki işleri bekleme
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1| Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
Bu örnekte cmdlet'in Wait-Job
kullanılarak Start-Job
yerel bilgisayarda başlatılan işlerle nasıl kullanılacağı gösterilmektedir.
Bu komutlar, geçen hafta eklenen veya güncelleştirilen Windows PowerShell betik dosyalarını alan bir işi başlatır.
İlk komut, yerel bilgisayarda bir iş başlatmak için kullanır Start-Job
. İş, geçen hafta eklenen veya güncelleştirilen .ps1 dosya adı uzantısına sahip tüm dosyaları alan bir Get-ChildItem
komut çalıştırır.
Üçüncü komut, iş sonlandırıcı duruma gelene kadar beklemek için kullanır Wait-Job
. İş tamamlandığında, komut iş hakkındaki bilgileri içeren iş nesnesini görüntüler.
Örnek 9: Invoke-Command kullanarak uzak bilgisayarlarda işlerin başlatılmasını bekleyin
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
Bu örnekte, 'nin AsJob parametresi kullanılarak uzak bilgisayarlarda başlatılan işlerle nasıl kullanılacağı Wait-Job
gösterilmektedirInvoke-Command
. AsJob kullanılırken, iş yerel bilgisayarda oluşturulur ve iş uzak bilgisayarlarda çalıştırılıyor olsa bile sonuçlar otomatik olarak yerel bilgisayara döndürülür.
Bu örnek, üç uzak bilgisayarda oturumlarda çalışan bir Get-Process
komutun sonlandırıcı durumda olup olmadığını belirlemek için kullanırWait-Job
.
İlk komut üç bilgisayarda PSSession nesneleri oluşturur ve bunları değişkende $s
depolar.
İkinci komut, içindeki üç oturumun $s
her birinde çalıştırmak Get-Process
için kullanırInvoke-Command
.
komutu asjob parametresini kullanarak komutu zaman uyumsuz olarak bir iş olarak çalıştırır. komutu, kullanılarak Start-Job
başlatılan işler gibi bir iş nesnesi döndürür ve iş nesnesi değişkende $j
depolanır.
Üçüncü komut, içindeki iş nesnesini cmdlet'ine $j
göndermek için Wait-Job
bir işlem hattı işleci (|
) kullanır. Invoke-Command
İş yerel bilgisayarda bulunduğundan, bu durumda bir komut gerekli değildir.
Örnek 10: Kimliği olan bir işi bekleme
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
Bu komut, kimlik değeri 1 olan işi bekler.
Parametreler
-Any
Bu cmdlet'in iş nesnesini döndürdüğünü ve herhangi bir iş tamamlandığında yürütmeye devam ettiğini gösterir. Varsayılan olarak, Wait-Job
istem görüntülenmeden önce belirtilen tüm işler tamamlanana kadar bekler.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Filter
Koşulların karma tablosunu belirtir. Bu cmdlet karma tablodaki tüm koşulları karşılayan işleri bekler. Anahtarların iş özellikleri, değerlerin ise iş özelliği değerleri olduğu bir karma tablo girin.
Bu parametre yalnızca iş akışı işleri ve zamanlanmış işler gibi özel iş türlerinde çalışır. Cmdlet'i kullanılarak Start-Job
oluşturulanlar gibi standart işlerde çalışmaz. Bu parametre desteği hakkında bilgi için iş türü için yardım konusuna bakın.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | Hashtable |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Force
Bu cmdlet'in işleri Askıya Alındı veya Bağlantısı Kesildi durumunda beklemeye devam ettiğini gösterir. varsayılan olarak, Wait-Job
işler aşağıdaki durumlardan birinde olduğunda beklemeyi döndürür veya sonlandırır:
- Tamamlandı
- Başarısız
- Durduruldu
- Askıya alındı
- Bağlantı kesildi
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Id
Bu cmdlet'in beklediği işlerin kimlik dizisini belirtir.
Kimlik, geçerli oturumdaki işi benzersiz olarak tanımlayan bir tamsayıdır. Örnek kimliğinden daha kolay anımsanıp yazabilirsiniz, ancak yalnızca geçerli oturumda benzersizdir. Virgülle ayırarak bir veya daha fazla kimlik yazabilirsiniz. İşin kimliğini bulmak için yazın Get-Job
.
Tür: | Int32[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-InstanceId
Bu cmdlet'in beklediği işlerin örnek kimlikleri dizisini belirtir. Varsayılan değer tüm işlerdir.
Örnek kimliği, bilgisayardaki işi benzersiz olarak tanımlayan bir GUID'dir. bir işin örnek kimliğini bulmak için kullanın Get-Job
.
Tür: | Guid[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Job
Bu cmdlet'in beklediği işleri belirtir. İş nesnelerini içeren bir değişken veya iş nesnelerini alan bir komut girin. İş nesnelerini Wait-Job
cmdlet'e göndermek için işlem hattı işleci de kullanabilirsiniz. Varsayılan olarak, Wait-Job
geçerli oturumda oluşturulan tüm işleri bekler.
Tür: | Job[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Name
Bu cmdlet'in beklediği işlerin kolay adlarını belirtir.
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-State
bir iş durumu belirtir. Bu cmdlet yalnızca belirtilen durumdaki işler için bekler. Bu parametrenin kabul edilebilir değerleri şunlardır:
- NotStarted
- Çalışıyor
- Tamamlandı
- Başarısız
- Durduruldu
- Engellendi
- Askıya alındı
- Bağlantı kesildi
- Askıya alınıyor
- Durduruluyor
İş durumları hakkında daha fazla bilgi için bkz . JobState Numaralandırması.
Tür: | JobState |
Kabul edilen değerler: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Timeout
Her iş için en uzun bekleme süresini saniye cinsinden belirtir. -1 varsayılan değeri, cmdlet'in iş bitene kadar beklediğini gösterir. Zamanlama, komutu değil, komutu gönderdiğinizde Wait-Job
Start-Job
başlar.
Bu süre aşılırsa, iş hala çalışıyor olsa bile bekleme sona erer ve yürütme devam eder. Komut herhangi bir hata iletisi görüntülemez.
Tür: | Int32 |
Diğer adlar: | TimeoutSec |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
System.Management.Automation.RemotingJob
Bir iş nesnesini bu cmdlet'e yöneltebilirsiniz.
Çıkışlar
System.Management.Automation.PSRemotingJob
Bu cmdlet, sonlandırıcı durumdaki işleri temsil eden iş nesnelerini döndürür. Timeout parametresinin değeri aşıldığından bekleme süresi sona eriyorsa hiçbir Wait-Job
nesne döndürmez.
Notlar
PowerShell için aşağıdaki diğer adları Wait-Job
içerir:
- Tüm platformlar:
wjb
varsayılan olarak, Wait-Job
işler aşağıdaki durumlardan birinde olduğunda beklemeyi döndürür veya sonlandırır:
- Tamamlandı
- Başarısız
- Durduruldu
- Askıya alındı
- Bağlantı kesildi
Askıya Alınan ve Bağlantısı Kesilen işleri beklemeye devam etmek üzere yönlendirmek Wait-Job
için Zorla parametresini kullanın.
İlişkili Bağlantılar
PowerShell