带有.InstallProductKey的WMIMethodException

问题描述 投票:1回答:2

首先,这是我的第一篇文章,所以如果我错误地将其发布在错误的位置,请告诉我。

所以,我们要完成的是构建一个PowerShell脚本,我们可以将其放在我们的工作站图像上,这样一旦我们的Windows 10盒子完成成像,我们可以点击一个powershell脚本,让它从BIOS中取出键,并自动激活它。话虽这么说,这是我们从各种来源汇总的脚本。


(Get-WmiObject -query ‘select * from SoftwareLicensingService’).OA3xOriginalProductKey | out-file c:\license.txt

$computer = gc env:computername

$key = get-content c:\license.txt

$service = get-wmiObject -query “select * from SoftwareLicensingService” -computername $computer

$service.InstallProductKey($key)        <--------THIS IS WHERE IT FAILS

$service.RefreshLicenseStatus()

我们开始讨论$service.InstallProductKey($key)线上的问题。看来,无论我们如何尝试调用它,它都会一直失败并出现错误“异常调用”InstallProductKey“”。我甚至用特定的激活密钥替换了变量($key),并且它仍然以相同的错误失败。

我们将其输出到许可证txt文件的部分原因是我们可以验证命令确实是拉动产品密钥(它是什么)。

在这一点上,我不知道该往哪里去。似乎人们之前已经尝试过这样做,然而,没有人真正用他们的工作和/或没有工作来完成他们的工作。我无法想象这是不可能的,但我也不喜欢浪费时间而不是需要,所以任何对这个问题有任何见解的人,我都会非常感激。

我们已经让它在以前被激活的两台机器上工作,后来被停用,但是在刚刚成像的新机器上,并且尚未被激活,它每次都会失败。

windows powershell activation
2个回答
1
投票

根据我的观察,有两件事:

(Get-WmiObject -query ‘select * from SoftwareLicensingService’).OA3xOriginalProductKey | out-file c:\license.txt

我不认为它会给你的license.txt返回任何值。如果是,那么我希望您查看许可证密钥之前和之后是否有任何空格。您可以在从文件中获取内容时使用trim。

第二件事,当你从文件中获取内容时,确保它没有分成多行。在这种情况下,您必须将其转换为字符串,如[String] $ key,或者您可以为此调用toString()方法。

更重要的是在安装后刷新。

$service.RefreshLicenseStatus()

注意:确保以提升模式运行shell。

替代方法:尝试对值进行硬编码并查看结果

$key = "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" # hardcode the key
$computer= "Computer01" # Hardcode the computer
$service = get-wmiObject -query "select * from SoftwareLicensingService" -computername $computer
$service.InstallProductKey($key)
$service.RefreshLicenseStatus()

更进一步,请发布确切的错误。希望能帮助到你...!!!


0
投票

发现Get-WmiObject的钥匙最后有空白。如果添加了.Trim(),原始命令将起作用。也不以管理员身份运行会导致相同的错误。

(Get-WmiObject -query ‘select * from SoftwareLicensingService’).OA3xOriginalProductKey | out-file c:\license.txt
$computer = gc env:computername
$key = (get-content c:\license.txt).Trim()  #trim here
$service = get-wmiObject -query “select * from SoftwareLicensingService” -computername $computer
$service.InstallProductKey($key) 
$service.RefreshLicenseStatus()
© www.soinside.com 2019 - 2024. All rights reserved.