使用 SetupComplete.cmd实现 Windows Server自动内网KMS激活
我使用的方法不用 AutoUnattend.xml,因为AutoUnattend.xml,太难写了,需要先判断实现的
我用别人现成的、编辑好的 SetupComplete.cmd也就是我常常提到的MAS,MAS 工具(官网地址)其中有一个单文件Online_KMS_Activation.cmd,专门用来激活KMS,并且可以修改设置,实现无人值守,这使得我只需要将SetupComplete.cmd封装到ISO中去,不用管脚本怎么实现,当然其实写那种简单的slmgr.vbs命令行也是可以的,但是自己写提权和环境检测,其实很麻烦,而且还要针对每个不同的镜像都写一遍,还是直接用MAS设置好KMS地址和端口比较方便。
第一步:准备脚本文件
首先在(官网地址)下载MAS,注意要下ZIP,然后找到Online_KMS_Activation.cmd,重命名为SetupComplete.cmd,随后打开编辑。
这是我的设置,最重要的是以下几点:
1.删除自动更新
2.取消自动续期(以免使用公众服务器续期)
3.设置你的kms服务器和端口
4.设置无人值守激活
:: 若要使用 K-M-S 激活 Windows,请使用 "/K-Windows" 参数运行脚本,或在下面一行中将 0 更改为 1
set _actwin=0
:: 若要使用 K-M-S 激活所有 Office 应用(包括 Project/Visio),请使用 "/K-Office" 参数运行脚本,或在下面一行中将 0 更改为 1
set _actoff=0
:: 若要仅使用 K-M-S 激活 Project/Visio,请使用 "/K-ProjectVisio" 参数运行脚本,或在下面一行中将 0 更改为 1
set _actprojvis=0
:: 若要使用 K-M-S 激活所有 Windows/Office,请使用 "/K-WindowsOffice" 参数运行脚本,或在下面一行中将 0 更改为 1
set _actwinoff=1
:: 若要在当前版本不支持 K-M-S 激活时禁用 Windows/Office 版本更改,请使用 "/K-NoEditionChange" 参数运行脚本,或在下面一行中将 0 更改为 1
set _NoEditionChange=1
:: 若要在激活时不自动安装续期任务,请使用 "/K-NoRenewalTask" 参数运行脚本,或在下面一行中将 0 更改为 1
set _norentsk=1
:: 若要卸载 K-M-S,请使用 "/K-Uninstall" 参数运行脚本,或在下面一行中将 0 更改为 1。此参数优先于任何其他参数。
set _uni=0
:: 高级选项:
:: 如果您要使用特定的服务器名称而不是脚本中使用的公共服务器,请不要使用续期任务选项
:: 若要指定激活服务器地址,请使用 "/K-Server-您的KMS服务器名称" 参数运行脚本,或在下面一行的 = 号后添加它
set _server=mskms.bupt.edu.cn
:: 若要指定激活端口,请使用 "/K-Port-您的端口名称" 参数运行脚本,或在下面一行的 = 号后添加它
set _port=61688
:: 调试模式:
:: 若要在调试模式下运行脚本,请在下面一行中将 0 更改为您想要运行的任何上述参数
set "_debug=0"
:: 如果使用参数或在以上行中更改了激活或卸载的值,脚本将以无人值守模式运行。
第二步:植入 ISO 镜像
需要使用工具(如 UltraISO、AnyBurn 或 PowerISO,我用的是PowerISO)编辑Windows Server ISO 文件。
Windows Server ISO 文件随意从哪里下载都行,我是从微软许可证中心下载(https://admin.cloud.microsoft/?#/subscriptions/vlnew/downloadsandkeys)
用PowerISO打开ISO文件,在 sources文件夹下下构建以下文件夹结构,并SetupComplete.cmd将放在那里,最后保存镜像(正版镜像一般不存在以下路径,如果不存在则新建):
\sources\$OEM$\$$\Setup\Scripts\SetupComplete.cmd
[ISO根目录]
├── setup.exe
└── sources
├── install.wim
└── $OEM$
└── $$
└── Setup
└── Scripts
└── SetupComplete.cmd



第三步:虚拟机 (VMware) 测试
这一步的重点是不要直接选 ISO!否则 VMware 会启动简易安装,会强行覆盖 $OEM$ 设置,导致脚本不运行。其他的正常即可。有点懒得描述了,直接放截图。
1. 创建虚拟机
















2. 挂载 ISO



3. 启动并安装
详细步骤掠过,正常安装即可。
最后进入系统的时候,打开CMD运行命令验证即可
slmgr -xpr

DLC和结语:设置AutoUnattend.xml,自动选择版本
由于我的需要,我编辑了一个XML,跳过版本选择界面,直接默认选中 Datacenter 桌面版,然后直接跳到“选择硬盘分区”的界面,其他如果有需要也可以自行设置。
其实核心思路就是,AutoUnattend.xml只做部署的时候该做的事情,而SetupComplete.cmd负责一些更复杂的,部署完成后的工作(而且最好是在进入桌面,等待网络就绪之后再运行)。
这次绕了一个非常大的弯道,先尝试在AutoUnattend.xml中写ps1,效果很差,还得判断在进入桌面后再开始工作,里面写ps1语句也不稳定,换了SetupComplete.cmd这种方法之后几乎没做任何事情,只是把MAS封装进去即可,以后会参考这个思路用SetupComplete.cmd自动安装软件。

浙公网安备 33010602011771号