Forum Discussion
Windows 10 Subscription Activation via Powershell
Your if statement appears to be missing an evaluation. As you have it originally you have this
if($ProductKey)
So in effect, to quote, "if Product Key what?". What do you want product key to be? I would say you want the script block below to run if the product key is not null/emtpy, correct? So something like this might work
$ProductKey = (Get-CimInstance -ClassName SoftwareLicensingService).OA3xOriginalProductKey
if ($null -ne $ProductKey)
{
start-process c:\Windows\System32\changePK.exe -ArgumentList "/ProductKey $ProductKey"
}
Thanks for the response. I made the change based on your suggestion and what this did was pull up the GUI version of the windows key activation where it asks to manually enter the key. Progress, you could say, but this script needs to be silent and input that information on it's own. This gives me something to work on, but if you have any more suggestions, I would greatly appreciate it.
- Graham WattsJun 25, 2019Copper Contributor
OK, I'll admit I didn't validate the actual process you were running initially; it looked visually OK at a first glance.
Some quick playing shows that changePK.exe seems to suck when called via Start-Process or Invoke-Expression. So, what I've done instead is switch to another licensing utility instead, slmgr.vbs.
Try this:
$ProductKey = (Get-CimInstance -ClassName SoftwareLicensingService).OA3xOriginalProductKey
if ($null -ne $ProductKey)
{
Start-Process -FilePath "c:\Windows\System32\slmgr.vbs" -ArgumentList "/ipk $ProductKey"
}
- Pat O'NeilJun 27, 2019Copper ContributorFigured it out. Had to add -filepath after start-process. It now activates the embedded key! Thank you so much!
$ProductKey = (Get-CimInstance -ClassName SoftwareLicensingService).OA3xOriginalProductKey
if ($null -ne $ProductKey)
{
start-process -filepath c:\Windows\System32\changePK.exe -ArgumentList "/ProductKey $ProductKey"
}- gastoneJul 27, 2019Brass Contributor
Totally native Powershell & remote activation:cls $computer = $env:computername $ProductKey = (Get-CimInstance -ClassName SoftwareLicensingService).OA3xOriginalProductKey if ($ProductKey) { write-debug "set $ProductKey" $service = get-wmiObject -query "select * from SoftwareLicensingService" -computername $computer $service.InstallProductKey($ProductKey ) $service.RefreshLicenseStatus() $service.RefreshLicenseStatus() write-debug "done" }else{ write-debug 'Key not found!' }