Windows Server 激活检查与 KMS 切换
场景
服务器提示需要激活、右下角出「Windows 未激活」水印,或者要把 MAK 换成内网 KMS 统一管理。
前置条件
- 管理员权限
- 内网有 KMS 服务器,客户端能通 1688 端口
- 知道 KMS 地址,或者域里已经发布了
_vlmcs._tcp的 SRV 记录
配置
:: 看当前状态和剩余天数
slmgr /dli
slmgr /xpr
:: 看详细信息(到期时间、激活类型、密钥类型)
slmgr /dlv
:: 换成内网 KMS
slmgr /skms kms.corp.local:1688
slmgr /ato
MAK 换回来时要重新装密钥:
slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
slmgr /ato
验证
slmgr /xpr
应显示「计算机已永久激活」,或者 KMS 的 180 天周期。
# 域里找 KMS 的 SRV 记录
Resolve-DnsName -Name "_vlmcs._tcp" -Type SRV
回滚
:: 清掉手动设置的 KMS 地址,回到默认(DHCP / DNS 自动发现)
slmgr /ckms
坑
- 时间不同步会导致激活失败,KMS 对时间偏差敏感,先
w32tm /resync。 - KMS 客户端每 7 天续一次,一个周期 180 天;离线超过 180 天会掉激活。
- 域里如果自动发布了 KMS,
slmgr /ato会自己找到,不用手填地址。 slmgr /dlv里的「剩余 Windows 重置计数」是 sysprep 次数,和激活无关,别看错。- 虚拟机克隆后 CMID 重复可能激活异常,先
sysprep再激活。 - 批量服务器用
slmgr /skms一台台敲很蠢,用组策略或者登录脚本推。