2016-12-22 21 views
0

먼저 내 첫 번째 게시물이므로 잘못된 위치에 잘못 올린 경우 알려 주시기 바랍니다..IMstallProductKey를 사용하는 WMIMethodException

우리가 달성하고자하는 것은 워크 스테이션 이미지에 던져 넣을 수있는 powershell 스크립트를 작성하여 Windows 10 상자가 이미징 완료되면 powershell 스크립트를 클릭하고 키를 입력하고 자동으로 활성화하십시오. 즉, 여기에 우리가 다양한 출처에서 모은 스크립트가 있습니다.


(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 파일로 부분 출력하는 이유는 명령이 실제로 제품 키를 가져 오는 지 확인할 수 있기 때문입니다.

이 시점에서 나는 어디로 가야할지 모르겠다. 사람들은 이전에이 작업을 시도한 것으로 보이지만 아무도 작업 한 내용 및/또는하지 않은 내용으로 게시를 마무리하지 못했습니다. 이것이 불가능하다는 것을 상상할 수는 없지만, 필요 이상으로 시간을 낭비하지 않기 때문에이 문제에 대한 통찰력을 가진 사람이라면 매우 감사 할 것입니다.

이전에 활성화되었고 나중에 비활성화 된 두 대의 컴퓨터에서 작업했지만 새롭게 이미지화 된 시스템에서 아직 활성화되지 않은 새 컴퓨터에서는 매번 실패합니다. 내 관찰에 따라

+0

또한 스크립트가 반영된 것으로 확신하므로 코딩/스크립팅이 나의 장점이 아닙니다. 그래서 부드럽게하십시오.lol –

+0

전체 오류 메시지 게시 – andyb

+0

동일한 문제가 있으며 새로운 컴퓨터이기 때문인 것으로 보입니다. 전체 오류 메시지는 다음과 같습니다 D에서 "" : 예외 "InstallProductKey를"호출 \ ProjectionWorks-SystemInstallScripts \ ActivateWindows.ps1 : 4 문자 : 1 + $ service.InstallProductKey ('일부 제품 키') + ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ + CategoryInfo : NotSpecified : (:) [], MethodInvocationException + FullyQualifiedErrorId : WMIMethodException – hlo

답변

1

두 가지 :

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

나는 그것이 당신의 LICENSE.TXT에 대한 값을 반환하고 있다고 생각하지 않습니다. 그렇다면 라이센스 키 전후에 공백이 있는지 확인하십시오. 파일에서 내용을 가져 오는 동안 으로자를 수 있습니다.

두 번째로, 파일에서 콘텐츠를 가져 오는 경우 두 번째로 여러 줄로 분리되지 않는지 확인하십시오. 이 경우 [String] $ key과 같은 문자열로 캐스팅하거나 toString() 메서드를 호출해야합니다.

더 중요한 것은 설치 후 새로 고치는 것입니다.

$service.RefreshLicenseStatus() 

참고 :이 높은 모드에서 쉘을 실행하고 있는지 확인합니다.

대안 : 값을 하드 코딩 시도하고 결과를

$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() 

더 우선, 정확한 오류를 게시하시기 바랍니다를 참조하십시오. 희망이 있습니다 ... !!!