Wait-Job
Oturumda çalışan PowerShell işlerinden birinin veya tümünün bitme durumuna gelene kadar bekler.
Sözdizimi
SessionIdParameterSet EnterprisePublishing
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>]
Description
Wait-Job cmdlet'i yürütmeye devam etmeden önce işin sonlandırıcı durumda olmasını bekler.
Sonlandırıcı durumlar şunlardır:
- Tamamlandı
- Başarısız oldu
- Durduruldu
- Askıya alındı
- Bağlantısı kesilmiş
Belirtilen iş veya tüm işler sona erme durumuna gelene kadar bekleyebilirsiniz. ayrıca Zaman Aşımı parametresini kullanarak iş için en uzun bekleme süresini ayarlayabilir veya veya Suspended durumlarında bir işi beklemek için Disconnected parametresini kullanabilirsiniz.
İşteki komutlar tamamlandığında Wait-Job bir iş nesnesi döndürür ve yürütmeye devam eder.
Wait-Job cmdlet'ini veya Start-Job cmdlet'in AsJob parametresini kullanarak işlerin başlamasını beklemek için Invoke-Command cmdlet'ini kullanabilirsiniz. İşler hakkında daha fazla bilgi için bkz. about_Jobs.
Windows PowerShell 3.0'dan başlayarak, Wait-Job cmdlet'i iş akışı işleri ve zamanlanmış işlerin örnekleri gibi özel iş türlerini de bekler.
Wait-Job'ın belirli bir türdeki işleri beklemesini sağlamak için, Get-Job cmdlet'ini kullanarak veya modül içindeki bir cmdlet'i kullanarak ya da alarak, Import-Module cmdlet'ini çalıştırmadan önce ö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 bekle
Get-Job | Wait-Job
Bu komut, oturumda çalışan tüm işlerin tamamlanmasını bekler.
Örnek 2: uzak bilgisayarlarda Start-Job kullanarak başlatılan işleri bekleme
$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 örnekte, Wait-Job cmdlet'i kullanılarak uzak bilgisayarlarda başlatılan işlerle Start-Job cmdlet'in nasıl kullanılacağı gösterilmektedir. hem Start-Job hem de Wait-Job komutları Invoke-Command cmdlet'i kullanılarak uzak bilgisayara gönderilir.
Bu örnekte, üç farklı bilgisayarda iş olarak çalışan bir Wait-Job komutunun tamamlanıp tamamlanmadığını belirlemek için Get-Date kullanılır.
İlk komut, üç uzak bilgisayarın her birinde bir Windows PowerShell oturumu (PSSession) oluşturur ve bunları $s değişkeninde depolar.
İkinci komut, Invoke-Commandiçindeki üç oturumun her birinde Start-Job çalıştırmak için $s kullanır.
Tüm işler Date1 olarak adlandırılır.
Üçüncü komut Invoke-Commandçalıştırmak için Wait-Job kullanır. Bu komut, her bilgisayardaki Date1 işlerinin tamamlanmasını bekler.
değişkenindeki nesneler işin elde edilen koleksiyonunu ($done) depolar.
Dördüncü komut, değişkenindeki iş nesneleri dizisinin $done özelliğini kullanarak işlerden 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 örnekte, geçerli oturumda çalışan birçok işin ilkinin ne zaman sonlandırıcı durumda olduğunu belirlemek için parametresi Wait-Job kullanılır. Ayrıca, uzak işlerin bitmesini beklemek için Wait-Job cmdlet'inin nasıl kullanılacağını gösterir.
İlk komut, Machines.txt dosyasında listelenen bilgisayarların her birinde bir PSSession oluşturur ve PSSession nesnelerini $s değişkeninde depolar. komut, dosyanın içeriğini almak için Get-Content cmdlet'ini kullanır.
Get-Content komutu, New-PSSession komutundan önce çalıştığından emin olmak için parantez içine alınır.
İkinci komut, Get-EventLog bir komut dizesini tırnak içinde $c değişkeninde depolar.
Üçüncü komut, Invoke-Command'daki oturumların her birinde Start-Job çalıştırmak için $s cmdlet'ini kullanır.
Start-Job komutu, Get-EventLog değişkeninde $c komutunu çalıştıran bir iş başlatır.
komut, Using: değişkeninin yerel bilgisayarda tanımlandığını belirtmek için $c kapsam değiştiricisini kullanır.
Using: kapsam değiştiricisi Windows PowerShell 3.0'da kullanıma sunulmuştur.
Using: kapsam değiştirici hakkında daha fazla bilgi için bkz. about_Remote_Variables.
Dördüncü komut, oturumlarda bir Invoke-Command komutu çalıştırmak için Wait-Job kullanır. İlk iş uzak bilgisayarlarda sonlandırılıyor durumuna gelene kadar 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 üzere Wait-Job parametresinin 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 $s değişkeninde depolar.
İkinci komut, Invoke-Command'ı, Start-Jobiçindeki PSSession nesnelerinin her birinde $s'i çalıştırmak için kullanır. Sonuçta elde edilen iş nesnelerini $jobs değişkeninde depolar.
Üçüncü komut, Invoke-Commandiçindeki oturumların her birinde Wait-Job çalıştırmak için $s kullanır.
Wait-Job komutu, tüm komutların 30 saniye içinde tamamlanıp tamamlanmadığını belirler. En fazla bekleme süresini oluşturmak için 30 değerine sahip Zaman Aşımı parametresini kullanır ve komutun sonuçlarını $done değişkeninde 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.
$done değişkeni, 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ırma durumuna 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: İsmiyle bir işi beklemek
Wait-Job -Name "Job3"
Bu komut, bekleyebileceğiniz işi tanımlamak için iş adını kullanır.
Örnek 8: yerel bilgisayardaki işlerin Start-Job ile başlatılmasını bekleyin
$j = Start-Job -ScriptBlock {Get-ChildItem -Filter *.ps1 | Where-Object {$PSItem.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Days 7))}}
$j | Wait-Job
Bu örnekte, Wait-Jobkullanılarak yerel bilgisayarda başlatılan işlerle Start-Job cmdlet'inin 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 Start-Job kullanır. İş, geçen hafta eklenen veya güncelleştirilen Get-ChildItem dosya adı uzantısına sahip tüm dosyaları alan bir .ps1 komutu çalıştırır.
Üçüncü komut, iş sonlandırıcı duruma gelene kadar beklemek için Wait-Job kullanır. İş tamamlandığında, komut iş hakkındaki bilgileri içeren iş nesnesini görüntüler.
Örnek 9: Uzaktaki bilgisayarlarda Invoke-Command kullanarak başlatılan işleri bekleyin.
$s = New-PSSession -ComputerName Server01, Server02, Server03
$j = Invoke-Command -Session $s -ScriptBlock {Get-Process} -AsJob
$j | Wait-Job
Bu örnekte, Wait-JobAsJob parametresi kullanılarak uzak bilgisayarlarda başlatılan işlerle Invoke-Command nasıl kullanılacağı gösterilmektedir.
AsJobkullanı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 örnekte, üç uzak bilgisayarda oturumlarda çalışan bir Wait-Job komutunun sonlandırıcı durumda olup olmadığını belirlemek için Get-Process kullanılır.
İlk komut, üç bilgisayarda PSSession nesneleri oluşturur ve bunları $s değişkeninde depolar.
İkinci komut, Invoke-Commandiçindeki üç oturumun her birinde Get-Process çalıştırmak için $s kullanır.
komut, AsJob parametresini kullanarak komutu zaman uyumsuz olarak iş olarak çalıştırır. komutu, Start-Jobkullanılarak başlatılan işler gibi bir iş nesnesi döndürür ve iş nesnesi $j değişkeninde depolanır.
Üçüncü komut, | içindeki iş nesnesini $j cmdlet'ine göndermek için bir işlem hattı işleci (Wait-Job) kullanır. İş yerel bilgisayarda bulunduğundan bu durumda bir Invoke-Command komutu 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.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Filter
Koşulların karma tablosunu belirtir. Bu cmdlet karma tablodaki tüm koşulları karşılayan işleri bekler. Bir karma tablo girin, burada anahtarlar iş özellikleri, değerler ise iş özelliği değerleridir.
Bu parametre yalnızca iş akışı işleri ve zamanlanmış işler gibi özel iş türlerinde çalışır.
Start-Job cmdlet'i kullanılarak 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.
Parametre özellikleri
| Tür: | Hashtable |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
FilterParameterSet
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | 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 oldu
- Durduruldu
- Askıya alındı
- Bağlantısı kesilmiş
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Parametre özellikleri
| Tür: | SwitchParameter |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | 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 hatırlanır ve yazılır, ancak yalnızca mevcut oturumda benzersizdir." Virgülle ayırarak bir veya daha fazla kimlik yazabilirsiniz. İşin kimliğini bulmak için Get-Jobyazın.
Parametre özellikleri
| Tür: | Int32[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
SessionIdParameterSet
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | 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 Get-Jobkullanın.
Parametre özellikleri
| Tür: | Guid[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
InstanceIdParameterSet
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | 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'ine göndermek için bir boru hattı operatörü de kullanabilirsiniz. Varsayılan olarak, Wait-Job geçerli oturumda oluşturulan tüm işleri bekler.
Parametre özellikleri
| Tür: | Job[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
JobParameterSet
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | True |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-Name
Bu cmdlet'in beklediği işlerin kullanıcı dostu adlarını belirtir.
Parametre özellikleri
| Tür: | String[] |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
NameParameterSet
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
-State
bir iş durumu belirtir. Bu cmdlet yalnızca belirtilen durumdaki işler için bekler. Bu parametre için kabul edilebilir değerler şunlardır:
- Henüz Başlamadı
- Koşmak
- Tamamlandı
- Başarısız oldu
- Durduruldu
- Bloklandı
- Askıya alındı
- Bağlantısı kesilmiş
- Askıya alma
- Durdurma
İş durumları hakkında daha fazla bilgi için bkz. JobState Sıralaması.
Parametre özellikleri
| Tür: | JobState |
| Default value: | None |
| Kabul edilen değerler: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| Joker karakterleri destekler: | False |
| DontShow: | False |
Parametre kümeleri
StateParameterSet
| Position: | 0 |
| Zorunlu: | True |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | True |
| Kalan bağımsız değişkenlerden elde edilen değer: | 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, Wait-Job komutunu değil, Start-Job komutunu gönderdiğinizde 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.
Parametre özellikleri
| Tür: | Int32 |
| Default value: | None |
| Joker karakterleri destekler: | False |
| DontShow: | False |
| Diğer adlar: | TimeoutSec |
Parametre kümeleri
(All)
| Position: | Named |
| Zorunlu: | False |
| İşlem hattından gelen değer: | False |
| Özellik adına göre işlem hattından gelen değer: | False |
| Kalan bağımsız değişkenlerden elde edilen değer: | False |
CommonParameters
Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.
Girişler
System.Management.Automation.RemotingJob
Bir iş nesnesini bu cmdlet'e yöneltebilirsiniz.
Çıkışlar
System.Management.Automation.PSRemotingJob
Bu cmdlet, sonlandırılmakta olan işleri temsil eden iş nesnelerini döndürür.
Zaman Aşımı parametresinin değeri aşıldığından bekleme sona eriyorsa, Wait-Job hiçbir nesne döndürmez.
Notlar
PowerShell, Wait-Jobiçin aşağıdaki diğer adları 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 oldu
- Durduruldu
- Askıya alındı
- Bağlantısı kesilmiş
Wait-Job'ın Askıya Alınmış ve Bağlantısı Kesilmiş işleri beklemeye devam etmesini sağlamak için Zorla parametresini kullanın.