Stop-Job (Microsoft.PowerShell.Core)
Stop-Job
- โมดูล :
- Microsoft.PowerShell.Core
หยุดงานพื้นหลัง PowerShell
ไวยากรณ์
Stop-Job
[-PassThru]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Stop-Job
[-PassThru]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]Stop-Job
[-PassThru]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]Stop-Job
[-PassThru]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]Stop-Job
[-PassThru]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]คำอธิบาย
cmdlet Stop-Job หยุดงานพื้นหลังของ PowerShell ที่กำลังดำเนินการอยู่ คุณสามารถใช้ cmdlet นี้เพื่อหยุดงานทั้งหมดหรือหยุดงานที่เลือกตามชื่อ รหัส รหัสอินสแตนซ์ หรือสถานะ หรือโดยการส่งวัตถุงานไปที่ Stop-Job
คุณสามารถใช้ Stop-Job เพื่อหยุดงานเบื้องหลัง เช่น งานที่เริ่มต้นโดยใช้ Start-Job cmdlet หรือพารามิเตอร์ AsJob ของ cmdlet ใด ๆ เมื่อคุณหยุดงานเบื้องหลัง PowerShell จะทำงานทั้งหมดที่ค้างอยู่ในคิวงานนั้นให้เสร็จสิ้น จากนั้นจึงสิ้นสุดงาน ไม่มีการเพิ่มงานใหม่ลงในคิวหลังจากส่งคำสั่งนี้แล้ว
cmdlet นี้ไม่ได้ลบงานพื้นหลัง หากต้องการลบงาน ให้ใช้ Remove-Job cmdlet
เริ่มต้นใน Windows PowerShell 3.0 Stop-Job ยังหยุดประเภทงานที่กำหนดเอง เช่น WorkflowJobs และอินสแตนซ์ของ ScheduledJobs หากต้องการเปิดใช้งาน Stop-Job เพื่อหยุดงานด้วยประเภทงานที่กำหนดเอง ให้นำเข้าโมดูลที่รองรับประเภทงานที่กำหนดเองลงในเซสชันก่อนที่คุณจะรันคำสั่ง Stop-Job อย่างใดอย่างหนึ่ง โดยใช้ Import-Module cmdlet หรือโดยใช้หรือรับ cmdlet ในโมดูล สำหรับข้อมูลเกี่ยวกับประเภทงานที่กำหนดเองโดยเฉพาะ โปรดดูเอกสารประกอบของคุณสมบัติประเภทงานที่กำหนดเอง
ตัวอย่าง
ตัวอย่างที่ 1: หยุดงานบนคอมพิวเตอร์ระยะไกลด้วย Invoke-Command
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
ตัวอย่างนี้แสดงวิธีการใช้ cmdlet Stop-Job เพื่อหยุดงานที่กำลังทำงานอยู่บนคอมพิวเตอร์ระยะไกล
เนื่องจากงานเริ่มต้นด้วย Invive-Command cmdlet เพื่อรันคำสั่ง Start-Job จากระยะไกล วัตถุงานจึงถูกจัดเก็บไว้ในคอมพิวเตอร์ระยะไกล คุณต้องใช้คำสั่ง Inrigger-Command อื่นเพื่อรันคำสั่ง Stop-Job จากระยะไกล สำหรับข้อมูลเพิ่มเติมเกี่ยวกับงานพื้นหลังระยะไกล โปรดดู about_Remote_Jobs
คำสั่งแรกจะสร้างเซสชัน PowerShell (PSSession) บนคอมพิวเตอร์ Server01 จากนั้นจัดเก็บออบเจ็กต์เซสชันไว้ในตัวแปร $s คำสั่งใช้ข้อมูลรับรองของผู้ดูแลระบบโดเมน
คำสั่งที่สองใช้ Invoke-Command cmdlet เพื่อรันคำสั่ง Start-Job ในเซสชัน คำสั่งในงานรับเหตุการณ์ทั้งหมดในบันทึกเหตุการณ์ของระบบ ออบเจ็กต์งานผลลัพธ์จะถูกเก็บไว้ในตัวแปร $j
คำสั่งที่สามหยุดงาน โดยใช้ Invive-Command cmdlet เพื่อเรียกใช้คำสั่ง Stop-Job ใน PSSession บน Server01 เนื่องจากออบเจ็กต์งานถูกจัดเก็บไว้ใน $j ซึ่งเป็นตัวแปรบนเครื่องคอมพิวเตอร์ คำสั่งจึงใช้ตัวแก้ไขขอบเขต การใช้ เพื่อระบุ $j เป็นตัวแปรท้องถิ่น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวแก้ไขขอบเขต การใช้ โปรดดู about_Remote_Variables
เมื่อคำสั่งเสร็จสิ้น งานจะหยุดลงและ PSSession ใน $s จะพร้อมใช้งาน
ตัวอย่างที่ 2: หยุดงานเบื้องหลัง
Stop-Job -Name "Job1"คำสั่งนี้หยุดงานพื้นหลัง Job1
ตัวอย่างที่ 3: หยุดงานพื้นหลังหลายงาน
Stop-Job -Id 1, 3, 4คำสั่งนี้จะหยุดสามงาน โดยจะระบุพวกเขาด้วย IDs
ตัวอย่างที่ 4: หยุดงานพื้นหลังทั้งหมด
Get-Job | Stop-Jobคำสั่งนี้จะหยุดงานเบื้องหลังทั้งหมดในเซสชันปัจจุบัน
ตัวอย่างที่ 5: หยุดงานพื้นหลังที่ถูกบล็อกทั้งหมด
Stop-Job -State Blockedคำสั่งนี้จะหยุดงานทั้งหมดที่ถูกบล็อก
ตัวอย่างที่ 6: หยุดงานตาม ID อินสแตนซ์
Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -Auto
Id Name Command State InstanceId
-- ---- ------- ----- ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s* Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf
คำสั่งเหล่านี้แสดงวิธีหยุดงานตาม InstanceID
คำสั่งแรกใช้ Get-Job cmdlet เพื่อรับงานในเซสชันปัจจุบัน คำสั่งใช้ตัวดำเนินการไปป์ไลน์ (|) เพื่อส่งงานไปยังคำสั่ง Format-Table ซึ่งจะแสดงตารางคุณสมบัติที่ระบุของแต่ละงาน ตารางนี้ประกอบด้วย InstanceID ของแต่ละงาน จะใช้คุณสมบัติจากการคำนวณเพื่อแสดงสถานะของงาน
คำสั่งที่สองใช้คำสั่ง Stop-Job ที่มีพารามิเตอร์ InstanceID เพื่อหยุดงานที่เลือก
ตัวอย่างที่ 7: หยุดงานบนคอมพิวเตอร์ระยะไกล
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet Get-EventLog -LogName Sy...ตัวอย่างนี้แสดงวิธีการใช้ cmdlet Stop-Job เพื่อหยุดงานที่กำลังทำงานอยู่บนคอมพิวเตอร์ระยะไกล
เนื่องจากงานเริ่มต้นด้วยพารามิเตอร์ AsJob ของ Intake-Command cmdlet วัตถุ Job จึงอยู่บนเครื่องคอมพิวเตอร์ แม้ว่า งานทำงานบนคอมพิวเตอร์ระยะไกล ดังนั้น คุณสามารถใช้คำสั่ง Stop-Job ภายในเครื่องเพื่อหยุดงานได้
คำสั่งแรกใช้ Inrigger-Command cmdlet เพื่อเริ่มงานพื้นหลังบนคอมพิวเตอร์ Server01 คำสั่งใช้พารามิเตอร์ AsJob เพื่อรันคำสั่งระยะไกลเป็นงานพื้นหลัง
คำสั่งนี้ส่งคืนวัตถุงาน ซึ่งเป็นวัตถุงานเดียวกับที่ cmdlet Start-Job ส่งกลับ คำสั่งจะบันทึกอ็อบเจ็กต์งานในตัวแปร $j
คำสั่งที่สองใช้ตัวดำเนินการไปป์ไลน์เพื่อส่งงานในตัวแปร $j ไปยัง Stop-Job คำสั่งใช้พารามิเตอร์ PassThru เพื่อสั่ง Stop-Job เพื่อส่งคืนอ็อบเจ็กต์งาน การแสดงอ็อบเจ็กต์งานยืนยันว่าสถานะของงานถูกหยุด
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับงานพื้นหลังระยะไกล โปรดดู about_Remote_Jobs
พารามิเตอร์
-Confirm
แจ้งให้คุณยืนยันก่อนเรียกใช้ cmdlet
- พิมพ์ :
-
SwitchParameter
- นามแฝง :
cf
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-Filter
ระบุตารางเงื่อนไขแฮช cmdlet นี้จะหยุดงานที่ตรงตามเงื่อนไขทุกประการ ป้อนตารางแฮชโดยที่คีย์คือคุณสมบัติของงาน และค่าคือค่าคุณสมบัติของงาน
พารามิเตอร์นี้ใช้ได้กับประเภทงานที่กำหนดเองเท่านั้น เช่น WorkflowJobs และ ScheduledJobs ไม่ทำงานบนงานพื้นหลังมาตรฐาน เช่นงานที่สร้างขึ้นโดยใช้ cmdlet Start-Job สำหรับข้อมูลเกี่ยวกับการสนับสนุนสำหรับพารามิเตอร์นี้ โปรดดูหัวข้อวิธีใช้สำหรับประเภทงาน
พารามิเตอร์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0
- พิมพ์ :
แฮชเทเบิล
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Id
ระบุรหัสของงานที่ cmdlet นี้หยุด ค่าเริ่มต้นคืองานทั้งหมดในเซสชันปัจจุบัน
ID คือจำนวนเต็มที่ระบุงานในเซสชันปัจจุบันโดยไม่ซ้ำกัน จดจำและพิมพ์ได้ง่ายกว่ารหัสอินสแตนซ์ แต่จะไม่ซ้ำกันในเซสชันปัจจุบันเท่านั้น คุณสามารถพิมพ์ ID อย่างน้อย 1 รายการโดยคั่นด้วยเครื่องหมายจุลภาค หากต้องการค้นหา ID ของงาน ให้พิมพ์ Get-Job
- พิมพ์ :
อินที32[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
ทุกงาน
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-InstanceId
ระบุรหัสอินสแตนซ์ของงานที่ cmdlet นี้หยุด ค่าเริ่มต้นคืองานทั้งหมด
รหัสอินสแตนซ์คือ GUID ที่ระบุงานบนคอมพิวเตอร์โดยไม่ซ้ำกัน หากต้องการค้นหา ID อินสแตนซ์ของงาน ให้ใช้ Get-Job
- พิมพ์ :
ไกด์[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
ทุกงาน
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Job
ระบุงานที่ cmdlet นี้หยุด ป้อนตัวแปรที่มีงานหรือคำสั่งที่รับงาน คุณยังสามารถใช้ตัวดำเนินการไปป์ไลน์เพื่อส่งงานไปยัง Stop-Job cmdlet ตามค่าเริ่มต้น Stop-Job จะลบงานทั้งหมดที่เริ่มต้นในเซสชันปัจจุบัน
- พิมพ์ :
งาน[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
ทุกงาน
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-Name
ระบุชื่อที่เป็นมิตรของงานที่ cmdlet นี้หยุด ป้อนชื่องานในรายการที่คั่นด้วยเครื่องหมายจุลภาค หรือใช้อักขระตัวแทน (*) เพื่อป้อนรูปแบบชื่องาน ตามค่าเริ่มต้น Stop-Job จะหยุดงานทั้งหมดที่สร้างขึ้นในเซสชันปัจจุบัน
เนื่องจากชื่อที่จำง่ายไม่รับประกันว่าจะไม่ซ้ำกัน ให้ใช้พารามิเตอร์ WhatIf และ Confirm เมื่อหยุดงานตามชื่อ
- พิมพ์ :
String[]
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
ทุกงาน
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
True
-PassThru
ส่งกลับวัตถุที่เป็นตัวแทนของรายการที่คุณกำลังทำงานอยู่ ตามค่าเริ่มต้น cmdlet นี้ไม่สร้างผลลัพธ์ใดๆ
- พิมพ์ :
SwitchParameter
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
-State
ระบุสถานะของงาน cmdlet นี้หยุดเฉพาะงานในสถานะที่ระบุ ค่าที่ยอมรับได้สำหรับพารามิเตอร์นี้คือ:
NotStartedRunningCompletedFailedStoppedBlockedSuspendedDisconnectedSuspendingStoppingสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสถานะของงาน โปรดดู การแจงนับ JobState
- พิมพ์ :
JobState
- ค่าที่ยอมรับ:
ไม่เริ่ม, ทำงาน, เสร็จสมบูรณ์, ล้มเหลว, หยุด, ถูกบล็อก, ถูกระงับ, ตัดการเชื่อมต่อ, ถูกระงับ, หยุด, ที่จุดพัก
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
ทุกงาน
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
False
-WhatIf
แสดงสิ่งที่จะเกิดขึ้นหาก cmdlet ทำงาน cmdlet ไม่ทำงาน
- พิมพ์ :
SwitchParameter
- นามแฝง :
wi
- ตำแหน่ง:
ตั้งชื่อ
- ค่าเริ่มต้น:
False
- ที่จำเป็น:
False
- ยอมรับอินพุตไปป์ไลน์:
False
- ยอมรับอักขระตัวแทน:
False
อินพุต
System.Management.Automation.RemotingJob
คุณสามารถไปป์วัตถุงานไปที่ cmdlet นี้
เอาท์พุต
ไม่มี
ตามค่าเริ่มต้น cmdlet นี้จะส่งกลับไม่มีผลลัพธ์
System.Management.Automation.PSRemotingJob
เมื่อคุณใช้พารามิเตอร์ PassThru cmdlet นี้จะส่งกลับวัตถุงาน
หมายเหตุ
PowerShell มีนามแฝงต่อไปนี้สำหรับ Stop-Job:
ทุกแพลตฟอร์ม:
spjb