我需要将Windows映像部署到Windows 8.1附带的几台计算机上。 我确实设法为安装映像注入驱动程序和更新以及一些必要的软件,但不知何故,似乎只安装Windows不会激活操作系统,我必须找到嵌入BIOS中的许可证密钥并手动激活它们。
我发现可以使用wmic path softwarelicenseingservice get oa3xoriginalproductkey
从BIOS中提取产品密钥,我正在考虑编写一个批处理文件,该文件与slmgr -ipk
和{{1}一起使用此命令然后使其作为firstlogon命令运行。
问题是我对批处理语法知之甚少,而且我很难将产品密钥指定为变量并将其传递给slmgr命令。
似乎wmic命令将结果返回为:
slmgr -ato
因此,它以三行文本返回产品密钥,实际有用信息夹在其他字符串之间。如何从此文本中获取中间(或第二)行并将其指定为变量?
答案 0 :(得分: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%
。
答案 1 :(得分:0)
这是我怎么做的
登录脚本accept powershell脚本,其功能和强度远远超过旧批处理文件。
$key = Get-WmiObject -Class SoftwareLicensingService |
Select-Object OA3xOriginalProductKey | foreach { "{0}" -f $_.OA3xOriginalProductKey }
使用此命令,您可以将ProductID放入$ key变量中并随意进行任何操作
答案 2 :(得分:0)
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
将其另存为批处理文件并尝试
答案 3 :(得分:0)
这就是我所需要的。
效果很好。
for /f "tokens=2 delims='='" %%K IN ('wmic path softwarelicensingservice get OA3xOriginalProductkey /value') do set pk=%%K
slmgr.vbs /ipk "%pk%"
slmgr.vbs /ato