【问题标题】:Activating Windows 8.1 with BIOS product key with batch command使用批处理命令使用 BIOS 产品密钥激活 Windows 8.1
【发布时间】:2015-06-17 16:34:48
【问题描述】:

我需要将 Windows 映像部署到几台装有 Windows 8.1 的计算机上。 我确实设法将驱动程序和更新以及一些必要的软件注入到安装映像中,但不知何故,似乎只安装 Windows 不会激活操作系统,我必须找到嵌入在 BIOS 中的许可证密钥并手动激活它们。

我发现wmic path softwarelicenseingservice get oa3xoriginalproductkey可以用来从bios中提取产品密钥,我正在考虑编写一个批处理文件,结合slmgr -ipkslmgr -ato使用这个命令,然后制作它作为 firstlogon 命令运行。

问题是我对批处理语法知之甚少,而且我很难将产品密钥分配为变量并将其传递给 slmgr 命令。

似乎 wmic 命令返回结果为:

OA3xOriginalProductKey  
XXXXX-XXXXX-XXXXX-XXXXX-XXXXX      
<blank line>

所以它以三行文本返回产品密钥,实际有用的信息夹在其他字符串之间。如何从该文本中获取中间(或第二)行并将其分配为变量?

【问题讨论】:

    标签: windows batch-file command wmic


    【解决方案1】:

    也许这对你有用。请注意,它确实涉及一个临时文本文件。

    wmic path softwarelicenseingservice get oa3xoriginalproductkey > temp.txt
    3<temp.txt (
    set /p var= <&3
    set /p var= <&3
    )
    del temp.txt
    Echo %var%
    

    这将始终从命令中提取第二行输出。 我已经用您提供的数据对此进行了测试,它输出了XXXXX-XXXXX-XXXXX-XXXXX-XXXXX。要访问此变量,请始终将其称为 %var%

    【讨论】:

    • 感谢您的回答!我会试试这个方法。
    【解决方案2】:

    我会这样做

    登录脚本accept powershell 脚本比旧的批处理文件具有更多的功能和强度。

    $key = Get-WmiObject -Class SoftwareLicensingService | 
    Select-Object OA3xOriginalProductKey | foreach { "{0}" -f $_.OA3xOriginalProductKey }
    

    使用此命令,您可以将 ProductID 放入 $key 变量中,并可以随意使用它进行任何操作

    【讨论】:

    • 非常感谢您的回答。虽然这次我可能会使用批处理(我现在无法尝试新的东西......),但我看到 powershell 比批处理命令强大得多。下次我会尝试更多地了解这件事并实施到我的工作流程中。
    【解决方案3】:
    cscript.exe C:\Windows\System32\slmgr.vbs /upk
    
    cscript.exe C:\Windows\System32\slmgr.vbs /cpky
    
    for /f "tokens=2 delims='='" %%K IN ('wmic path softwarelicensingservice get OA3xOriginalProductkey /value') do set pk=%%K
    
    cscript.exe C:\Windows\System32\slmgr.vbs /ipk %pk%
    
    cscript.exe C:\Windows\System32\slmgr.vbs /ato
    
    cscript.exe C:\Windows\System32\slmgr.vbs /dli
    

    将此保存为批处理文件并尝试

    【讨论】:

      【解决方案4】:

      这是我需要的。

      完美运行。

      for /f "tokens=2 delims='='" %%K IN ('wmic path softwarelicensingservice get OA3xOriginalProductkey /value') do set pk=%%K
      
      slmgr.vbs /ipk "%pk%"
      
      slmgr.vbs /ato
      

      【讨论】:

        猜你喜欢
        • 2014-06-18
        • 2014-03-19
        • 2018-07-16
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 1970-01-01
        • 2021-05-14
        • 2011-08-11
        相关资源
        最近更新 更多