如果你一直通过脚本管理 Windows 许可证,那么 slmgr.vbs 你一定烂熟于心——设置激活、延长宽限期、查询状态,全部通过一个自古以来就内置在每个 Windows 里的 VBScript 文件完成。而现在,恰恰是这个文件有了“保质期”,因为微软正在将底层的脚本语言从操作系统中移除。
- 微软早在 2024 年就出于安全原因宣布 VBScript 已被弃用——
slmgr.vbs在技术上依赖于它,因此间接受到影响。 - 替代方案名为 OSLicense:一个包含十一个 Cmdlet、用于 Windows 激活的 PowerShell 模块,据 Wolfgang Sommergut 称将包含在 Windows 11 25H2 中——但多名读者反映,在安装预览更新 KB5120998 后仍未找到该模块。
- Windows Server 要等到下一个主要版本(估计是 2028 年)才会获得该模块——在此之前那里只能使用
slmgr.vbs。 - VBScript 目前还没有确定的停用日期。从第二阶段起(推测从 Windows 11 27H2 开始),VBScript 将只作为可选功能(FOD)提供,不再默认启用。
slmgr.vbs 迄今为止的作用
slmgr.vbs 是 Windows 内置的脚本,可通过命令行控制软件许可和激活——设置产品密钥、查询激活状态、延长激活宽限期、排查激活问题。对于通过“设置”页面用产品密钥激活 Windows 的终端用户来说,这一变化不会带来任何影响。受影响的是那些在安装脚本、部署工具或维护流程中自动化了激活步骤的管理员,例如在搭建一台 Windows VPS 时。
为什么偏偏是 VBScript 要消失
微软早在 2024 年 5 月就在 Tech Community 的文章《VBScript deprecation: Timelines and next steps》中宣布了 VBScript 的弃用计划,原因是出于安全考虑。这一时间表分阶段推进:从第二阶段起——按目前的估计是从 2027 年起,推测将随 Windows 11 27H2 到来——VBScript 将不再默认启用,只能作为按需功能(Feature on Demand)后续安装。至于 VBScript 彻底消失的具体日期,微软目前尚未公布。
“既然 VBScript 早就被视为‘deprecated’(已弃用),并将在可预见的时间内从操作系统中移除,管理员应该逐步淘汰 slmgr.vbs。”——Wolfgang Sommergut
OSLicense:十一个 Cmdlet 作为替代
微软用 PowerShell 模块 OSLicense 取代 VBScript,该模块包含十一个 Cmdlet,涵盖了 slmgr.vbs 常见的激活任务。据某个微软来源称,Invoke-OSLicense 已在 Windows Server vNext 预览版 Build 29651,以及 Windows 11 的 2026 年 9 月安全更新(KB5124008)中提供。而 Wolfgang Sommergut 则认为该模块早在 2026 年 8 月 27 日面向 Windows 11 24H2/25H2 发布的预览更新 KB5120998 中就已可用——不过在相关话题的评论区中,多名读者反映在打了补丁的 25H2 系统上并未找到该模块,微软自己的模块文档中也在某处明确指出,具体需要哪个更新尚未得到确认。Cmdlet 本身,微软在一篇针对 Windows Server 2025 的独立支持文章中做了文档说明。
| 特性 | slmgr.vbs | OSLicense |
|---|---|---|
| 技术基础 | VBScript | PowerShell 模块,11 个 Cmdlet |
| 状态 | 成熟,但技术上已被弃用 | 全新,推送情况尚不统一 |
| Windows 11 | 继续可用 | 据宣布将从 25H2 / KB5124008 起提供 |
| Windows Server | 继续可用 | 要等到下一个主要版本,估计是 2028 年 |
slmgr.vbs。你现在应该做什么
- 盘点现状。检查安装脚本、部署工具和维护任务中是否调用了
slmgr.vbs。Get-ChildItem -Path C:\Scripts -Recurse -Include *.ps1,*.bat,*.cmd | Select-String -Pattern "slmgr" - 检查 OSLicense 是否已经存在。在改写任何脚本之前,先确认该模块在对应系统上是否真的存在。
Get-Module -ListAvailable -Name OSLicense - 规划并行运行阶段。只要 VBScript 还没有确定的停用日期,就应该逐步用 OSLicense 的 Cmdlet 替换
slmgr.vbs调用,而不是一次性全部改掉。 - Windows Server 要单独处理。对于服务器角色,
slmgr.vbs目前仍是唯一选择——在微软真正为其提供该模块之前,不要在这里规划迁移。 - 在修改生产环境脚本之前,先在测试系统上试用——例如临时搭建一台单独的 Windows VPS 来测试。
- 相比调用 VBScript,PowerShell Cmdlet 能更干净地融入现有的 PowerShell 自动化流程。
- 这次转变是微软清理过时 Windows 组件的一部分——随着更新 KB5124008,同样已被弃用的 WMIC 也会一并消失。
- Windows Server 要晚好几年才能获得该模块——同时维护两套系统的人,眼下得两条路并行。
- 目前关于实际可用性的说法相互矛盾,缺乏可靠的推送时间点。
- VBScript 本身的停用日期依然未知——这算不上真正的规划保障。
怎么判断你也到了该切换的时候
只要你的 slmgr.vbs 调用还能顺利执行,就不必操之过急。只有当某个系统上的 VBScript 不再默认启用时——表现为脚本调用以报错而非状态输出结束——迁移才会变得紧迫。在此之前,持续关注 OSLicense 的 Cmdlet 情况、提前在测试系统上进行检查即可,不必等到停用当天才措手不及。
对所有搭建新 Windows 系统的人来说,情况本来就是:如果你今天通过我们的服务器订购页面搭建一台运行最新 Windows 的系统,通常都是正常地通过“设置”页面用产品密钥激活——完全感受不到围绕 slmgr.vbs 的这场争论。只有当激活成为自动化安装或维护流程的一部分时,这个话题才会变得相关。