自动判断使用主板自带序列号还是KMS激活Windows脚本
Powweshell脚本判断主板序列号
如果主板没有,则使用其他服务器
# 在当前 PowerShell 会话中,绕过执行策略限制,此设置仅对当前会话有效,一旦关闭 PowerShell 窗口,设置将失效
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# 获取软件许可服务的信息
$licenseService = Get-CimInstance -ClassName SoftwareLicensingService
# 检查是否存在原始产品密钥
if ($licenseService.OA3xOriginalProductKey) {
try {
# 如果存在,设置产品密钥
& C:\Windows\System32\slmgr.vbs /ipk $licenseService.OA3xOriginalProductKey -ErrorAction Stop
Write-Host "产品密钥已成功设置。"
} catch {
# 捕获设置产品密钥时的异常
Write-Host "设置产品密钥时出错:$_"
}
} else {
# 如果不存在,设置 KMS 服务器
Write-Host "OA3xOriginalProductKey 不存在,正在设置 KMS 服务器..."
try {
# 替换为实际的 KMS 服务器地址
$kmsServer = "your-kms-server-address"
& C:\Windows\System32\slmgr.vbs -skms $kmsServer -ErrorAction Stop
Write-Host "KMS 服务器设置成功。"
} catch {
# 捕获设置 KMS 服务器时的异常
Write-Host "设置 KMS 服务器时出错:$_"
}
}
# 最后激活 Windows
try {
& C:\Windows\System32\slmgr.vbs /ato -ErrorAction Stop
Write-Host "Windows 已成功激活。"
} catch {
# 捕获激活 Windows 时的异常
Write-Host "激活 Windows 时出错:$_"
}
批处理脚本
24H2默认好像没有启用wmic,建议使用Powershell脚本
@echo off
title 自动判断使用主板自带序列号还是KMS激活Windows
setlocal
:: 卸载现有的产品密钥
echo 卸载现有的产品密钥...
slmgr /upk
:: 检查是否存在 OA3xOriginalProductKey
for /f "tokens=2 delims==" %%i in ('wmic path softwarelicensingservice get OA3xOriginalProductKey /format:list ^| find "="') do (
set "productKey=%%i"
)
if defined productKey (
:: 如果存在 OA3xOriginalProductKey,安装该产品密钥
echo 找到 OA3xOriginalProductKey,正在安装产品密钥...
slmgr /ipk %productKey%
) else (
:: 如果不存在 OA3xOriginalProductKey,设置 KMS 服务器
echo 未找到 OA3xOriginalProductKey,正在设置 KMS 服务器...
slmgr.vbs -skms your-kms-server-address
)
:: 激活Windows
echo 正在激活 Windows...
slmgr /ato
endlocal