# Windows 一键关闭所有程序的命令

> 本文公开全文。

原文：https://utgd.net/article/20959

## 用法

第一步：打开 Power Shell

第二步：复制粘贴以下命令：

```
Get-Process | Where-Object {  
    $_.MainWindowTitle -ne "" -and  
    $_.Id -ne $PID -and  
    $_.ProcessName -ne "explorer"  
} | Stop-Process -Force
```

完事

## 逐行讲解

第一行：告诉系统要找符合条件的进程。

- Get\-Process

该命令会获取当前系统上所有正在运行的进程。它返回一个进程对象列表，每个对象代表一个运行中的进程。

- \|

\| 名为管道操作符，用于将前一个命令的输出传递给下一个命令作为输入。在这里，Get\-Process 的输出被传递给 Where\-Object。

- Where\-Object \{ \.\.\. \}

Where\-Object 用于对输入的进程列表进行过滤。后面的花括号 \{ \.\.\. \} 中包含条件表达式，只有符合条件的进程会被保留下来。

花括号内（筛选要退出的程序）的条件：有主窗口标题、不包含 Powershell、不包含资源管理器。

- $\_\.MainWindowTitle \-ne ""

$\_ 代表当前管道中的对象（在这里是每个进程对象）。MainWindowTitle 是进程对象的一个属性，表示进程的主窗口标题。这个条件检查进程是否有一个非空的主窗口标题（即该进程是否在窗口中显示）。\-ne 是“不等于”的运算符，这里用于排除那些没有窗口标题的后台进程。

- \-and $\_\.Id \-ne $PID

$\_\.Id 是进程的 ID，$PID 是当前 PowerShell 脚本的进程 ID。这个条件确保不会终止当前运行该脚本的 PowerShell 进程本身，避免脚本将自身关闭。

- \-and $\_\.ProcessName \-ne "explorer"

• ProcessName 是进程对象的另一个属性，表示进程的名称。此条件用于排除文件资源管理器（即 explorer），以防止意外关闭系统的文件资源管理器。

- \| Stop\-Process \-Force

经过筛选的进程列表被传递给 Stop\-Process \-Force 命令，强制终止这些进程。\-Force 参数用于强制关闭，即便某些进程可能有关闭确认或阻止强制退出的机制。

\-utgd\-

---

[前往标准阅读页](https://utgd.net/article/20959?audience=web)
