Add-MpPreference是否支持正则表达式路径排除及验证方法
一、ExclusionProcess参数的通配符/正则支持说明
首先要明确:ExclusionProcess参数是用来排除特定进程被Defender扫描的,而非直接排除文件夹。如果你的需求是排除文件夹,应该使用ExclusionPath参数,这是容易混淆的核心点。
针对ExclusionProcess本身:它支持使用通配符(比如*),但仅用于匹配进程的路径或名称,不支持完整正则表达式。例如Add-MpPreference -ExclusionProcess 'C:\Program Files\*\*.exe'会排除Program Files下所有子文件夹中的exe进程,但你例子里的'C:/Program Files/*'不符合进程路径格式(缺少进程文件名),虽然命令能执行,但实际不会生效——Defender会把它当作无效的进程路径处理。
如果目标是排除Program Files下的所有文件夹,正确命令应为:
Add-MpPreference -ExclusionPath 'C:\Program Files\*'
二、验证排除规则是否生效的方法
1. 用PowerShell查看当前规则
执行以下命令直接列出已配置的排除项:
Get-MpPreference | Select-Object -Property ExclusionProcess, ExclusionPath
检查输出结果里是否有你添加的规则,同时确认路径/进程格式是否正确。
2. 通过Defender图形界面验证
打开Windows安全中心,依次进入:
病毒和威胁防护 → 病毒和威胁防护设置 → 管理设置 → 排除项
在这个页面可以直观看到所有已添加的排除路径、进程、文件类型等,确认你的规则是否存在。
3. 手动触发扫描测试
针对目标路径执行快速扫描,观察Defender的行为:
Start-MpScan -ScanPath "C:\Program Files" -ScanType QuickScan
扫描过程中查看任务管理器的CPU占用(如果之前扫描该文件夹会导致高CPU,现在应该明显下降),或者查看扫描完成后的报告,确认是否跳过了目标文件夹。
4. 查看Defender操作日志
打开事件查看器,导航到:
应用程序和服务日志 → Microsoft → Windows → Windows Defender → Operational
查找事件ID为1006(扫描开始)、1007(扫描结束)或1116(排除项应用)的记录,里面会明确显示扫描时是否应用了排除规则,以及哪些路径/进程被跳过。
三、Kubernetes Windows节点批量管理建议
如果需要在多个Windows节点上统一配置排除规则,建议使用配置管理工具(比如Ansible、PowerShell DSC)批量执行命令,避免逐个节点手动操作,减少出错概率。
内容的提问来源于stack exchange,提问作者Abdul Khaliq

