当前位置: 首页 > 教程资源 > Windows 教程 > 正文
还在用 VBScript 激活系统?微软官方 PowerShell 替代方案来了

还在用 VBScript 激活系统?微软官方 PowerShell 替代方案来了

作者:大眼仔~旭 日期:4周前 (09-13) 评论:0 条

摘要:近三十年来,VBScript 一直是 Windows 环境下简化系统管理任务的首选工具之一。自 1996 年诞生并通过 Windows Script Host (WSH) 集成到操作系统以来,它甚至承担起了许多关键操作,其中最著名的便是通过 slmgr.vbs 脚本管理 Windows 激活。然而,微软正准备彻底移除 …

近三十年来,VBScript 一直是 Windows 环境下简化系统管理任务的首选工具之一。自 1996 年诞生并通过 Windows Script Host (WSH) 集成到操作系统以来,它甚至承担起了许多关键操作,其中最著名的便是通过 slmgr.vbs 脚本管理 Windows 激活。然而,微软正准备彻底移除 VBScript,并明确呼吁 IT 管理员将许可证自动化管理迁移至 PowerShell。这意味着,未来基于 slmgr.vbs 的企业级脚本可能会面临失效的风险。

Windows PowerShell 激活方法

Windows PowerShell 激活方法

VBScript 的退役路线图

微软早在 2023 年就宣布了弃用 VBScript 的计划,并于 2024 年 5 月公布了详细的分阶段淘汰路线图:

  1. 初期阶段:VBScript 作为“按需安装”的可选功能保留,且默认处于启用状态。
  2. 过渡阶段:该功能仍可安装,但不再默认启用。
  3. 最终阶段:从 Windows 系统中彻底移除。

到了 2026 年 9 月,微软开始着手解决这一过渡期遗留的实际问题:如何在自动化流程中替代用于激活 PC 和服务器的 slmgr.vbs 脚本。

OSLicense:新的 Windows 激活方案

微软给出的解决方案是 OSLicense —— 一个全新的 PowerShell 模块,旨在为过去由 VBScript 处理的各种操作提供现代化的接口。

为什么 slmgr.vbs 依然不可或缺?

slmgr.vbs(Software Licensing Manager)通常位于 System32 目录下,本质上是 Windows 软件保护平台 (SPP) 的管理前端。它通过 WSH 查询和修改操作系统的许可证信息。

Windows 管理员对这些命令应该非常熟悉:

  • slmgr.vbs /ato:尝试激活系统。
  • slmgr.vbs /ipk <产品密钥>:安装指定的产品密钥。
  • slmgr.vbs /dlv:获取详细的许可证信息。
  • slmgr.vbs /xpr:检查激活的过期时间。 此外,它还支持配置 KMS 主机、清除密钥以及处理其他特殊场景。

在批量授权环境中,slmgr.vbs 的地位尤为突出。微软多年来一直将其与 KMS、MAK(多次激活密钥)及 VAMT(批量激活管理工具)结合使用。许多企业部署脚本甚至不会弹出任何窗口,而是通过 cscript.exe 静默调用 slmgr.vbs,解析返回码后继续执行部署流程。

当 VBScript 引擎消失

核心问题在于:slmgr.vbs 高度依赖 VBScript 引擎。一旦该引擎被移除,即使脚本文件仍残留在系统镜像或历史流程中,也将因缺乏运行环境而彻底失效。

微软因此建议将关键业务迁移至 OSLicense 模块。这不仅仅是语法层面的重写,更是为了提供能够直接融入现代自动化工具链、且不再依赖 WSH 的原生 PowerShell 命令。

与 VBScript 依赖标准输出(打印字符串)不同,PowerShell 基于对象工作。脚本可以直接获取属性、验证结果、处理异常,并在函数间传递数据,无需再费力解析那些原本为人类阅读而设计的文本消息。例如,过去许多自动化流程需要调用 cscript.exe slmgr.vbs /ato,隐藏 WSH 窗口后再解析执行结果;而 PowerShell cmdlet 则能直接返回结构化数据,完美契合现代管理、日志记录和远程控制的需求。

OSLicense 的可用性与版本限制

需要注意的是,OSLicense 并非在所有 Windows 版本上开箱即用。微软提醒,该模块的可用性取决于具体的 Windows 版本和 SKU:

  • Windows 11 客户端:需要安装 2026 年 8 月的可选更新 KB5120998 或更高版本。
  • Windows Server:OSLicense 将内置于下一个 Windows Server 主要版本中。想要提前体验的管理员可以使用 Windows Server vNext 预览版(如 Build 29651)。

因此,不建议在明天一早就不假思索地替换所有 slmgr.vbs 调用。在执行前,建议通过以下简单的 PowerShell 命令检查模块是否存在:

1
Get-Module -ListAvailable OSLicense

从 slmgr.vbs 到 PowerShell:自动化的质变

这次迁移的意义远不止于命令的替换。历史上,slmgr.vbs 为密钥安装、激活、状态查询和批量激活服务配置提供了统一的接口。OSLicense 将这些操作全面引入了 PowerShell 模型,使其能更无缝地集成到复杂的自动化脚本中。

场景对比: 假设一个企业流程需要依次完成“安装 Windows -> 配置网络 -> 注册设备 -> 验证许可证”。

  • 旧模式:脚本启动 cscript.exe slmgr.vbs /ato,等待进程结束,然后读取并解析文本输出。
  • 新模式:整个逻辑都在 PowerShell 环境中运行。通过 try/catch 块进行错误处理,记录事件日志,并将结果对象直接传递给后续步骤。

此外,构建**幂等(Idempotent)**脚本变得更加容易。在执行激活前,脚本可以先检查系统是否已获授权,从而避免不必要的重复操作。

核心命令对照指南

为了方便管理员逐步重写脚本而不改变原有逻辑,微软提供了 slmgr.vbs 与 OSLicense 的直接映射关系。以下是企业环境中最常见的三种操作:

操作 slmgr.vbs 命令 PowerShell OSLicense 等效命令
激活 Windows slmgr.vbs /ato Invoke-OSLicense -ActivateOnline
安装产品密钥 slmgr.vbs /ipk <key> Invoke-OSLicense -InstallProductKey <key>
查看许可证状态 slmgr.vbs /dlv Get-OSLicenseInfo

以激活操作为例,slmgr.vbs /ato 会请求系统尝试激活。具体行为取决于密钥类型:Retail 或 MAK 密钥通常进行在线激活;而 GVLK(通用批量许可证密钥,用于 KMS 部署)则会向配置的 KMS 服务器发起激活请求。

在 OSLicense 中,同样的操作变为 Invoke-OSLicense -ActivateOnline。参数名称直观地表达了操作意图,管理员再也不用记忆 /ato 这样的缩写选项了。

实用检查清单

在编写自动化脚本前,务必确认模块已就绪:

检查模块是否可用:

1
Get-Module -ListAvailable OSLicense

查看模块导出的所有命令:

1
Get-Command -Module OSLicense

查阅特定 cmdlet 的详细帮助:

1
Get-Help Invoke-OSLicense -Full

或

1
Get-Help Get-OSLicenseInfo -Full

微软强烈建议在脚本开发阶段就加入上述检查。鉴于 OSLicense 仍在向各个 Windows 版本推送,仅凭几个月前发布的示例代码进行开发是存在风险的。保持动态验证,才是稳健的自动化之道。

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《还在用 VBScript 激活系统?微软官方 PowerShell 替代方案来了》
文章固定链接:https://www.dayanzai.me/microsoft-powershell-activation-solution.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (0条)
^_^ 暂无评论!

发表评论

返回顶部