ค้นหาเว็บไซต์

PowerShell: กำลังรอให้งานเสร็จสิ้นด้วย Wait-Job


cmdlet Wait-Job รอจนกระทั่งงาน PowerShell หนึ่งงานหรือทั้งหมดที่ทำงานในเซสชันอยู่ในสถานะสิ้นสุด ในบล็อกโพสต์นี้ ฉันจะแสดงตัวอย่างที่คุณสามารถสร้างต่อได้ มาเริ่มกันเลย.

Start-Job สร้างงานพื้นหลัง PowerShell หนึ่งงานขึ้นไป งานเหล่านี้ทำงานซ่อนอยู่ในพื้นหลังและช่วยให้คุณสามารถทำงานต่อใน PowerShell ได้ ตัวอย่างนี้เริ่มต้นงานพื้นหลังการสแกนพอร์ต

Start-Job -Name PortScan -ScriptBlock {Test-NetConnection 192.168.0.150 -Port 88}
Get-Job -Name PortScan

หากต้องการแสดงผลลัพธ์ของงานนี้ ให้รัน รับ-งาน โปรดทราบว่าคุณสามารถแสดงผลได้เพียงครั้งเดียว! ยกเว้นกรณีที่คุณใช้พารามิเตอร์ -Keep

Receive-Job -Name PortScan -Keep | Select-Object RemoteAddress,PingSucceeded,TcpTestSucceeded

รอจนกระทั่งงาน PowerShell หนึ่งงานหรือทั้งหมดที่ทำงานในเซสชันอยู่ในสถานะสิ้นสุด

Microsoft อธิบายดังนี้:

cmdlet Wait-Job จะรอให้งานอยู่ในสถานะสิ้นสุดก่อนที่จะดำเนินการต่อไป สถานะที่สิ้นสุดคือ:

  • สมบูรณ์
  • ล้มเหลว
  • หยุดแล้ว
  • ถูกระงับ
  • ตัดการเชื่อมต่อแล้ว

คุณสามารถรอจนกว่างานที่ระบุ หรืองานทั้งหมดอยู่ในสถานะสิ้นสุด คุณยังตั้งเวลารอสูงสุดสำหรับงานได้โดยใช้พารามิเตอร์ หมดเวลา หรือใช้พารามิเตอร์ บังคับ เพื่อรองานใน ถูกระงับ หรือสถานะ ตัดการเชื่อมต่อ

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/wait-job?view=powershell-7.3

นี่คือตัวอย่างวิธีการสร้างงาน 2 รายการ รองานที่สองซึ่งใช้เวลานานมาก งานทั้งสองไม่เกี่ยวข้องกัน แต่ดีสำหรับการทดสอบ ในที่สุดงานที่สองจะถูกเรียก แต่เมื่องานแรกเสร็จสิ้นเท่านั้น

Get-Job | Remove-Job -Force

Start-Job -Name PortScan -ScriptBlock {Test-NetConnection 192.168.0.150 -Port 88}
Start-Job -Name Files -ScriptBlock {Get-ChildItem C:\Windows -File -Recurse}
Wait-Job -Name Files
Receive-Job -Name PortScan -Keep | Select-Object RemoteAddress,PingSucceeded,TcpTestSucceeded

หวังว่านี่จะเป็นประโยชน์ และตอนนี้คุณสามารถใช้งาน Wait-Job cmdlet ในสคริปต์ PowerShell ของคุณได้แล้ว

บทความที่เกี่ยวข้อง