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 ได้