各位 PowerShell 用户和 IT 管理员请注意,如果你在安装完本周的 Windows 11 补丁星期二更新后,发现某些以前正常运行的签名脚本突然报错或无法执行——别慌,不是你的代码写错了,也不是证书过期了。
是微软在 KB5132061 更新中,悄悄收紧了 PowerShell 的安全检查策略。

这次变更没有大张旗鼓地宣传,甚至和最近的 PowerShell 7.7 发布无关,但它确实可能让你的自动化流水线“当场罢工”。
1. 发生了什么?UTF-8 编码验证“变严”了
根据 KB5132061 的发布说明,微软为 PowerShell 脚本签名和签名验证引入了更严格的文本编码验证。
以前的行为(宽松模式):
如果脚本包含格式错误的 UTF-8 字符,Windows 会在解码时自动替换无效字符,然后继续验证签名。很多老旧脚本就这样“蒙混过关”了。
现在的行为(严格模式):
Windows 明确拒绝任何包含无效 UTF-8 编码的脚本。即使脚本之前已经成功签名,现在运行 Get-AuthenticodeSignature 也可能返回 NotSigned 状态;尝试用 Set-AuthenticodeSignature 重新签名也会直接报错。
简单来说:微软不再容忍“格式错误但能用”的脚本了。你的脚本必须使用完全合规的 UTF-8 编码,否则签名验证一律不通过。

2. 影响范围:不止 Windows 11
虽然这次更新以 Windows 11 KB5132061 的名义推送,但微软的支持文档明确指出,该变更同样适用于:
- Windows 10 Enterprise LTSC 2021
- Windows Server 2025
- 以及其他多个 Windows Server 版本
如果你的企业环境中混合使用了这些系统,且依赖 PowerShell 脚本进行自动化部署、配置管理或安全审计,请务必提前排查。
3. 官方修复方案:三步走 + 批量修复工具
微软已经发布了详细的支持文档,并贴心地提供了一个PowerShell 修复工具。以下是推荐的修复流程:
🔧 手动修复(单个脚本):
- 审查受影响脚本的内容,确认无恶意篡改。
- 使用编辑器将脚本以 “带 BOM 的有效 UTF-8 编码” 重新保存。
- 对脚本重新签名。
🛠️ 批量修复(推荐): 微软制作的 PowerShell 修复工具可以:
- 扫描指定目录下的脚本文件,检测潜在编码问题。
- 尝试自动修复编码,同时保留现有签名信息。
- 不会覆盖原始文件(生成修复后的副本)。
⚠️ 注意:微软警告并非所有脚本都能被自动修复。对于工具无法处理的脚本,仍需手动审查并重签。
- 用于修复脚本签名编码问题的示例 PowerShell 脚本:https://support.microsoft.com/zh-cn/servicing/os/windows/docs/2026/11/powershell-sip-repair-script
- 已签名 PowerShell 脚本的编码指南:https://support.microsoft.com/zh-cn/servicing/os/windows/docs/2026/11/powershell-sip-canonical-repair
4. 为什么微软要这么做?
这本质上是一次安全加固。
PowerShell 脚本签名是防止供应链攻击和恶意代码注入的关键防线。如果允许格式错误的编码通过验证,攻击者就可能利用编码歧义绕过签名检查,或在脚本中隐藏恶意载荷。
收紧 UTF-8 验证,等于堵上了一个长期存在的“灰色地带”。虽然短期内会给运维带来额外工作量,但从长远看,这是提升 Windows 生态安全基线的必要之举。
5. 避坑清单:你现在该做什么
| 优先级 | 行动项 | 说明 |
|---|---|---|
| 🔴 高 | 检查生产环境脚本 | 优先排查关键业务、CI/CD 流水线中的签名脚本 |
| 🟡 中 | 下载官方修复工具 | 批量扫描并尝试自动修复 |
| 🟢 低 | 建立编码规范 | 团队统一使用“UTF-8 with BOM”保存 PS1 文件 |
| 🟢 低 | 更新签名流程 | 在 CI 中加入编码校验步骤,避免未来再次踩坑 |
KB5132061 带来的这次 PowerShell 变更,是典型的“安全优先于兼容”决策。它不会破坏你的系统,但会无情地拒绝那些“历史遗留”的不规范脚本。
好消息是,微软提供了清晰的修复路径和自动化工具。坏消息是,你可能需要花几个小时甚至几天时间,把那些年“凑合能用”的脚本全部“重新考证”一遍。
建议所有 PowerShell 重度用户尽快安排排查,别等到生产环境报警时才手忙脚乱。


