Aracılığıyla paylaş


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.