首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拉动OEM键激活

拉动OEM键激活
EN

Stack Overflow用户
提问于 2016-07-08 15:34:02
回答 1查看 1.9K关注 0票数 1

我是微软的合作伙伴,负责Surface 3和4的贷款和播种过程。我们每天对数百台设备进行重新成像,并在数字授权方面遇到问题。我需要一种方法从设备中提取OEM密钥,并使用该键强制激活。我正试图通过powershell脚本来实现这一点:

代码语言:javascript
复制
$computer = gc env:computername

$key = (Get-WmiObject -query ‘select * from SoftwareLicensingService’).OA3xOriginalProductKey | Out-String


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

$service.InstallProductKey($key)

$service.RefreshLicenseStatus()

我发现了一个错误:

代码语言:javascript
复制
Exception calling "InstallProductKey" : ""
At line:7 char:1
+ $service.InstallProductKey((Get-WmiObject -query ‘select * from Softw ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WMIMethodException

如果有更简单的方法来完成我正在做的事情,任何帮助都会被感激,或者修复这个错误。谢谢!

编辑:添加异常陷阱,新错误

代码语言:javascript
复制
Cannot convert the "System.Runtime.InteropServices.COMException (0xC004F025)
   at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32      errorCode, IntPtr errorInfo)
   at System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, 
InvokeMethodOptions options)
   at System.Management.Automation.ManagementObjectAdapter.InvokeManagementMethod(ManagementObject obj, String 
methodName, ManagementBaseObject inParams)" value of type    "System.Management.Automation.ErrorRecord" to type 
"System.Management.ManagementException".
At line:3 char:1
+ [System.Management.ManagementException] $_
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ConvertToFinalInvalidCastException
EN

回答 1

Stack Overflow用户

发布于 2018-09-20 02:11:47

尝试将.Trim()添加到$key的末尾

下面的代码也有类似的问题,它抛出了调用"InstallProductKey" : ""的相同错误异常--结果是$key返回了键字符串+几个空格。归功于@elexis捡起它。在任何地方都找不到解决办法。

代码语言:javascript
复制
$computer = gc env:computername
$key = (wmic path softwarelicensingservice get oa3xoriginalproductkey)[2].Trim() #<--The Trim is to remove the white space aftewards which causes an error
Write-Output $key

$service = get-wmiObject -query "select * from SoftwareLicensingService" -computername $computer
$service.InstallProductKey($key)
$service.RefreshLicenseStatus()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38270487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档