WMIMethodException与.InstallProductKey

首先,这是我的第一篇文章,所以如果我错误地发布在错误的位置,请让我知道。

所以,我们要完成的是构build一个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) 。 看来,无论我们如何尝试调用它,它将一贯地失败,错误“exception调用”InstallProductKey“”。 我甚$key用特定的激活码replace了variables( $key ),它仍然失败,出现相同的错误。

我们将它输出到许可证txt文件中的原因是,我们可以validation命令是否确实拉取了产品密钥(它是什么)。

在这一点上,我不知道该去哪里。 看来以前人们都试图做到这一点,但是,没有人真正把自己的发帖和有用的和/或没有发表的东西结合起来。 我无法想象这是不可能的,但是我也不喜欢浪费时间,所以任何对这个问题有深入了解的人,我都会很感激。

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

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

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

我不认为它是返回任何价值您的license.txt。 如果是的话,那么我想让你看看在许可证密钥前后是否有空间。 您可以在从文件获取内容期间使用修剪

第二件事,当你从文件中获取内容时,请确保它不会分成多行。 在这种情况下,您必须将其转换为像[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() 

为进一步的事情,请张贴确切的错误。 希望能帮助到你…!!!