Loading

使用 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 镜像

需要使用工具(如 UltraISOAnyBurnPowerISO,我用的是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

image

image

image

第三步:虚拟机 (VMware) 测试

这一步的重点是不要直接选 ISO!否则 VMware 会启动简易安装,会强行覆盖 $OEM$ 设置,导致脚本不运行。其他的正常即可。有点懒得描述了,直接放截图。

1. 创建虚拟机

image

image

image

image

 

image

image

image

 

image

image

image

image

image

image

image

image

image

2. 挂载 ISO

image

image

image

3. 启动并安装

详细步骤掠过,正常安装即可。

最后进入系统的时候,打开CMD运行命令验证即可

slmgr -xpr

image

DLC和结语:设置AutoUnattend.xml,自动选择版本

由于我的需要,我编辑了一个XML,跳过版本选择界面,直接默认选中 Datacenter 桌面版,然后直接跳到“选择硬盘分区”的界面,其他如果有需要也可以自行设置。

其实核心思路就是,AutoUnattend.xml只做部署的时候该做的事情,而SetupComplete.cmd负责一些更复杂的,部署完成后的工作(而且最好是在进入桌面,等待网络就绪之后再运行)。

这次绕了一个非常大的弯道,先尝试在AutoUnattend.xml中写ps1,效果很差,还得判断在进入桌面后再开始工作,里面写ps1语句也不稳定,换了SetupComplete.cmd这种方法之后几乎没做任何事情,只是把MAS封装进去即可,以后会参考这个思路用SetupComplete.cmd自动安装软件。

 

 

posted @ 2025-11-26 00:31  离者悲名  阅读(42)  评论(0)    收藏  举报