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

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 นี้หยุดเฉพาะงานในสถานะที่ระบุ ค่าที่ยอมรับได้สำหรับพารามิเตอร์นี้คือ:

    NotStarted
    Running
    Completed
    Failed
    Stopped
    Blocked
    Suspended
    Disconnected
    Suspending
    Stopping

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสถานะของงาน โปรดดู การแจงนับ 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

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