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

Stop-Process (Microsoft.PowerShell.Management)


Stop-Process

โมดูล :
Microsoft.PowerShell.Management

หยุดกระบวนการที่ทำงานอยู่ตั้งแต่หนึ่งกระบวนการขึ้นไป

ไวยากรณ์

Stop-Process
    [-Id] <Int32[]>
    [-PassThru]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Process
    -Name <String[]>
    [-PassThru]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Process
    [-InputObject] <Process[]>
    [-PassThru]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

คำอธิบาย

cmdlet Stop-Process หยุดกระบวนการที่ทำงานอยู่ตั้งแต่หนึ่งกระบวนการขึ้นไป คุณสามารถระบุกระบวนการตามชื่อกระบวนการหรือ ID กระบวนการ (PID) หรือส่งออบเจ็กต์กระบวนการไปที่ Stop-Process Stop-Process ใช้งานได้เฉพาะกับกระบวนการที่ทำงานบนเครื่องคอมพิวเตอร์เท่านั้น

บน Windows Vista และระบบปฏิบัติการ Windows เวอร์ชันใหม่กว่า หากต้องการหยุดกระบวนการที่ผู้ใช้ปัจจุบันไม่ได้เป็นเจ้าของ คุณต้องเริ่ม PowerShell โดยใช้ตัวเลือก Run as administrator นอกจากนี้ คุณจะไม่ได้รับแจ้งให้ยืนยันเว้นแต่คุณจะระบุพารามิเตอร์ ยืนยัน

ตัวอย่าง

ตัวอย่างที่ 1: หยุดอินสแตนซ์ทั้งหมดของกระบวนการ

PS C:\> Stop-Process -Name "notepad"

คำสั่งนี้จะหยุดอินสแตนซ์ทั้งหมดของกระบวนการ Notepad บนคอมพิวเตอร์ แต่ละอินสแตนซ์ของ Notepad ทำงานในกระบวนการของตัวเอง ใช้พารามิเตอร์ ชื่อ เพื่อระบุกระบวนการ ซึ่งทั้งหมดมีชื่อเดียวกัน หากคุณต้องใช้พารามิเตอร์ Id เพื่อหยุดกระบวนการเดียวกัน คุณจะต้องแสดงรายการรหัสกระบวนการของแต่ละอินสแตนซ์ของ Notepad

ตัวอย่างที่ 2: หยุดอินสแตนซ์เฉพาะของกระบวนการ

PS C:\> Stop-Process -Id 3952 -Confirm -PassThru

Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3952)".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):y
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
41       2      996       3212    31            3952 notepad

คำสั่งนี้จะหยุดอินสแตนซ์เฉพาะของกระบวนการ Notepad ใช้รหัสกระบวนการ 3952 เพื่อระบุกระบวนการ พารามิเตอร์ ยืนยัน กำหนดให้ PowerShell แจ้งให้คุณทราบก่อนที่จะหยุดกระบวนการ เนื่องจากพร้อมท์มีชื่อกระบวนการนอกเหนือจาก ID นี่คือแนวปฏิบัติที่ดีที่สุด พารามิเตอร์ PassThru จะส่งผ่านออบเจ็กต์กระบวนการไปยังตัวจัดรูปแบบสำหรับการแสดงผล หากไม่มีพารามิเตอร์นี้ จะไม่มีการแสดงผลหลังจากคำสั่ง Stop-Process

ตัวอย่างที่ 3: หยุดกระบวนการและตรวจพบว่าหยุดแล้ว

calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}

ชุดคำสั่งนี้จะเริ่มต้นและหยุดกระบวนการ Calc จากนั้นตรวจพบกระบวนการที่หยุดทำงาน

คำสั่งแรกเริ่มอินสแตนซ์ของเครื่องคิดเลข

คำสั่งที่สองใช้ Get-Process รับวัตถุที่แสดงถึงกระบวนการ Calc จากนั้นจัดเก็บไว้ในตัวแปร $p

คำสั่งที่สามหยุดกระบวนการ Calc โดยใช้พารามิเตอร์ InputObject เพื่อส่งวัตถุไปยัง Stop-Process

คำสั่งสุดท้ายจะรับกระบวนการทั้งหมดบนคอมพิวเตอร์ที่กำลังทำงานอยู่ แต่ตอนนี้หยุดทำงานแล้ว ใช้ Get-Process เพื่อรับกระบวนการทั้งหมดบนคอมพิวเตอร์ ตัวดำเนินการไปป์ไลน์ (|) ส่งผลลัพธ์ไปยัง Where-Object cmdlet ซึ่งเลือกค่าของคุณสมบัติ HasExited เป็น $จริง. HasExited เป็นเพียงคุณสมบัติของวัตถุกระบวนการ หากต้องการค้นหาคุณสมบัติทั้งหมด ให้พิมพ์ Get-Process | รับสมาชิก.

ตัวอย่างที่ 4: หยุดกระบวนการที่ผู้ใช้ปัจจุบันไม่ได้เป็นเจ้าของ

PS> Get-Process -Name "lsass" | Stop-Process

Stop-Process : Cannot stop process 'lsass (596)' because of the following error: Access is denied
At line:1 char:34
+ Get-Process -Name "lsass" | Stop-Process <<<<

[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process

Warning!
Are you sure you want to perform this action?
Performing operation 'Stop-Process' on Target 'lsass(596)'
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):

[ADMIN]: PS> Get-Process -Name "lsass" | Stop-Process -Force
[ADMIN]: PS>

คำสั่งเหล่านี้แสดงผลของการใช้ บังคับ เพื่อหยุดกระบวนการที่ผู้ใช้ไม่ได้เป็นเจ้าของ

คำสั่งแรกใช้ Get-Process เพื่อรับกระบวนการ Lsass ผู้ดำเนินการไปป์ไลน์ส่งกระบวนการไปที่ Stop-Process เพื่อหยุดกระบวนการ ดังที่แสดงในผลลัพธ์ตัวอย่าง คำสั่งแรกล้มเหลวโดยมีข้อความปฏิเสธการเข้าถึง เนื่องจากกระบวนการนี้สามารถหยุดได้โดยสมาชิกของกลุ่มผู้ดูแลระบบบนคอมพิวเตอร์เท่านั้น

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

คำสั่งที่สองระบุ บังคับ เพื่อระงับข้อความแจ้ง เป็นผลให้กระบวนการหยุดลงโดยไม่มีการยืนยัน

พารามิเตอร์

-Confirm

แจ้งให้คุณยืนยันก่อนเรียกใช้ cmdlet

พิมพ์ :

SwitchParameter

นามแฝง :

cf

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

False

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-Force

หยุดกระบวนการที่ระบุโดยไม่พร้อมท์ให้ยืนยัน ตามค่าเริ่มต้น Stop-Process จะแจ้งให้ยืนยันก่อนที่จะหยุดกระบวนการใดๆ ที่ผู้ใช้ปัจจุบันไม่ได้เป็นเจ้าของ

หากต้องการค้นหาเจ้าของกระบวนการ ให้ใช้ Get-CimInstance cmdlet เพื่อรับออบเจ็กต์ Win32_Process ที่แสดงถึงกระบวนการ จากนั้นใช้ GetOwner วิธีการของวัตถุ

พิมพ์ :

SwitchParameter

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-Id

ระบุ ID กระบวนการของกระบวนการที่จะหยุด หากต้องการระบุหลาย ID ให้ใช้เครื่องหมายจุลภาคเพื่อแยก ID หากต้องการค้นหา PID ของกระบวนการ ให้พิมพ์ Get-Process

พิมพ์ :

อินที32[]

ตำแหน่ง:

0

ค่าเริ่มต้น:

None

ที่จำเป็น:

True

ยอมรับอินพุตไปป์ไลน์:

True

ยอมรับอักขระตัวแทน:

False

-InputObject

ระบุอ็อบเจ็กต์กระบวนการที่จะหยุด ป้อนตัวแปรที่มีวัตถุ หรือพิมพ์คำสั่งหรือนิพจน์ที่ได้รับวัตถุ

พิมพ์ :

กระบวนการ[]

ตำแหน่ง:

0

ค่าเริ่มต้น:

None

ที่จำเป็น:

True

ยอมรับอินพุตไปป์ไลน์:

True

ยอมรับอักขระตัวแทน:

False

-Name

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

พิมพ์ :

String[]

นามแฝง :

ProcessName

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

None

ที่จำเป็น:

True

ยอมรับอินพุตไปป์ไลน์:

True

ยอมรับอักขระตัวแทน:

True

-PassThru

ส่งกลับวัตถุที่แสดงถึงกระบวนการ ตามค่าเริ่มต้น cmdlet นี้ไม่สร้างผลลัพธ์ใดๆ

พิมพ์ :

SwitchParameter

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-WhatIf

แสดงสิ่งที่จะเกิดขึ้นหาก cmdlet ทำงาน cmdlet ไม่ทำงาน

พิมพ์ :

SwitchParameter

นามแฝง :

wi

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

False

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

อินพุต

กระบวนการ

คุณสามารถไปป์วัตถุกระบวนการไปที่ cmdlet นี้

เอาท์พุต

ไม่มี

ตามค่าเริ่มต้น cmdlet นี้จะส่งกลับไม่มีผลลัพธ์

กระบวนการ

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

หมายเหตุ

PowerShell มีนามแฝงต่อไปนี้สำหรับ Stop-Process:

  • ทุกแพลตฟอร์ม:

      spps
  • Windows:

      kill

คุณยังสามารถใช้คุณสมบัติและวิธีการของออบเจ็กต์ Windows Management Instrumentation (WMI) Win32_Process ใน Windows PowerShell ได้ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ Get-CimInstance และ WMI SDK

  • เมื่อหยุดกระบวนการ โปรดทราบว่าการหยุดกระบวนการสามารถหยุดกระบวนการและบริการที่ขึ้นอยู่กับกระบวนการได้ ในกรณีที่ร้ายแรง การหยุดกระบวนการสามารถหยุด Windows ได้

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