跳转到内容

告别 slmgr.vbs:Windows 许可证激活未来将通过 OSLicense 进行

更新与新闻  ·   ·   ·  5 分钟 阅读时间

如果你一直通过脚本管理 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.vbsOSLicense
技术基础VBScriptPowerShell 模块,11 个 Cmdlet
状态成熟,但技术上已被弃用全新,推送情况尚不统一
Windows 11继续可用据宣布将从 25H2 / KB5124008 起提供
Windows Server继续可用要等到下一个主要版本,估计是 2028 年
Windows Server 落后一步:据目前的了解,OSLicense 模块要等到下一个主要版本才会登陆 Windows Server——估计是 2028 年。凡是自动化激活服务器角色的人,都必须比在 Windows 11 客户端上更长时间地依赖 slmgr.vbs

你现在应该做什么

  1. 盘点现状。检查安装脚本、部署工具和维护任务中是否调用了 slmgr.vbs
    Get-ChildItem -Path C:\Scripts -Recurse -Include *.ps1,*.bat,*.cmd | Select-String -Pattern "slmgr"
  2. 检查 OSLicense 是否已经存在。在改写任何脚本之前,先确认该模块在对应系统上是否真的存在。
    Get-Module -ListAvailable -Name OSLicense
  3. 规划并行运行阶段。只要 VBScript 还没有确定的停用日期,就应该逐步用 OSLicense 的 Cmdlet 替换 slmgr.vbs 调用,而不是一次性全部改掉。
  4. Windows Server 要单独处理。对于服务器角色,slmgr.vbs 目前仍是唯一选择——在微软真正为其提供该模块之前,不要在这里规划迁移。
  5. 在修改生产环境脚本之前,先在测试系统上试用——例如临时搭建一台单独的 Windows VPS 来测试。
支持理由
  • 相比调用 VBScript,PowerShell Cmdlet 能更干净地融入现有的 PowerShell 自动化流程。
  • 这次转变是微软清理过时 Windows 组件的一部分——随着更新 KB5124008,同样已被弃用的 WMIC 也会一并消失。
反对理由
  • Windows Server 要晚好几年才能获得该模块——同时维护两套系统的人,眼下得两条路并行。
  • 目前关于实际可用性的说法相互矛盾,缺乏可靠的推送时间点。
  • VBScript 本身的停用日期依然未知——这算不上真正的规划保障。
通过 RDP 管理 Windows 服务器的人,无论如何都应该先加固访问安全,再测试拥有较高权限的脚本——相关基础知识我们已经总结在《保护公开可访问的 RDP》一文中。

怎么判断你也到了该切换的时候

只要你的 slmgr.vbs 调用还能顺利执行,就不必操之过急。只有当某个系统上的 VBScript 不再默认启用时——表现为脚本调用以报错而非状态输出结束——迁移才会变得紧迫。在此之前,持续关注 OSLicense 的 Cmdlet 情况、提前在测试系统上进行检查即可,不必等到停用当天才措手不及。

对所有搭建新 Windows 系统的人来说,情况本来就是:如果你今天通过我们的服务器订购页面搭建一台运行最新 Windows 的系统,通常都是正常地通过“设置”页面用产品密钥激活——完全感受不到围绕 slmgr.vbs 的这场争论。只有当激活成为自动化安装或维护流程的一部分时,这个话题才会变得相关。

常见问题

我现在必须立刻改写所有激活脚本吗?
不需要。微软目前尚未公布 VBScript 的确切停用日期,弃用第二阶段预计要到 2027 年才会开始。现在合理的做法是先盘点哪些脚本用到了 slmgr.vbs,以免到时候措手不及。
slmgr.vbs 在你们这里的 Windows VPS 上还能用吗?
能。目前 VBScript 以及 slmgr.vbs 仍然正常运行。弃用计划针对的是未来的 Windows 版本,具体的停用日期尚未确定。
Windows Server 上已经有 OSLicense 了吗?
还没有。据目前的了解,Windows Server 要等到下一个主要版本(估计是 2028 年)才会获得该模块。在此之前,服务器系统上只能使用 slmgr.vbs。
如果我通常通过“设置”页面用产品密钥激活 Windows,会有什么变化吗?
不会。这次转变只涉及通过脚本进行的命令行激活方式,通过“设置”页面的激活方式保持不变。
在哪里能找到全部十一个 OSLicense Cmdlet 的文档?
微软在一篇针对 Windows Server 2025 的独立支持文章中列出了这些 Cmdlet。由于不同更新状态下的实际可用性说法尚不一致,建议事先在相应系统上用 Get-Module -ListAvailable -Name OSLicense 检查一下。
Prepaid-Host.com 本身即为服务器、虚拟主机与域名服务商,在此报道的正是自己所处的市场。我们如何处理这一点,见利益披露说明