自动判断使用主板自带序列号还是KMS激活Windows脚本 作者: _囧rz_ 时间: 2024-12-29 分类: 计算机类 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 ``` 标签: none