终止指定进程,不执行保存或优雅关闭;误用会直接丢失未保存数据。
Stop-Process 按进程对象、Id 或 Name 结束进程,默认不输出结果,加 -PassThru 返回已终止的 Process 对象;别名是 spps、kill。它调用的是强制终止,不会像窗口的“关闭”那样给应用保存机会;GUI 程序可先尝试 CloseMainWindow()。
管道:接受 Process 对象按值输入,也接受 Id/Name 按属性名绑定,所以 Get-Process notepad | Stop-Process 可直接工作。权限:只能结束当前用户拥有的进程;其他用户的进程需要管理员,受保护的系统进程即使提权也可能失败。-Force 用于跳过确认并处理需要强制的场景,但不等于绕过 UAC 或 ACL。
边界:服务应通过 Stop-Service 让 SCM 走 OnStop 流程;挂起的进程才用 Stop-Process。版本:5.1 与 7.x 的核心语义一致;7.x 在 Unix 上直接发送终止信号,没有 Windows 的进程所有权和 GUI 关闭语义。
# 1. 先预览会结束哪些实例,再决定是否执行
PS C:\> Get-Process notepad | Stop-Process -WhatIf
# 2. 按名称结束全部记事本实例;会丢失未保存内容
PS C:\> Get-Process -Name notepad | Stop-Process -Force
# 3. 按 PID 精确结束,并返回被终止的对象用于记录
PS C:\> Stop-Process -Id 1234 -PassThru
# 4. 只结束内存超过 1 GB 的 chrome 实例,缩小影响范围
PS C:\> Get-Process | Where-Object { $_.Name -eq 'chrome' -and $_.WorkingSet64 -gt 1GB } | Stop-Process -Force
# 5. 先请求窗口正常关闭,给应用保存机会
PS C:\> Get-Process notepad | ForEach-Object { $_.CloseMainWindow() }
# 6. 捕获不存在的 PID,避免脚本静默失败
PS C:\> try { Stop-Process -Id 999999 -ErrorAction Stop } catch { $_.Exception.Message }
Stop-Process 不给应用保存机会,影响范围是该进程所有未保存数据;操作前确认进程用途,必要时先 CloseMainWindow() 或从应用内退出。-Name 会结束所有同名实例和所有会话中的实例;用 Get-Process 先看 Id、SessionId、StartTime,再按 Id 精确操作。winlogon、csrss、lsass 等关键进程可能导致注销、蓝屏或系统不可用;关机请用 shutdown,不要靠杀进程。-Force 不提升权限;拒绝访问说明进程属于其他用户或受保护,需要管理员或改用服务控制。CloseMainWindow() 不存在;跨平台脚本不要依赖 Windows 专有行为。Get-Process — 先查询实例、内存和响应状态。Stop-Service — 停止服务应走 SCM,而不是杀宿主进程。taskkill — CMD 的进程终止命令,支持树形结束。shutdown — 正常关机/重启流程。合上页面,先回答,再展开对照。
Stop-Process 和窗口右上角的关闭按钮在数据保存上有什么区别?Stop-Process -Name chrome 可能影响多个用户会话?-Force 能解决“拒绝访问”吗?应该怎样处理?Stop-Process 直接终止,未保存数据会丢失。-Force 不绕过 UAC/ACL。拒绝访问需要提升权限或改用正确的服务/任务控制方式。
小程序版
微信扫码,随时查命令