I have an issue cause I am trying to deploy a script which lists the major data of PCs, but unfortunately I cannot get license key of anything. All the computers in the company (except IT) use Windows 7 Pro and have powershell v 2.0. I need to get license key, but do not have any ideas. I tried going cmd and then "wmic path softwarelicensingservice get OA3xOriginalProductKey" but this does not work. Suggestions?

closed as unclear what you're asking by harrymc, bertieb, Toto, PeterH, n8te Oct 18 at 8:04

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • but wmic isn't a PowerShell feature, it is an external Windows command. You can run it from a cmd.exe prompt.... What do you actually see when you run that command? – Mokubai Oct 15 at 17:49
  • As I wrote, i used wmic on cmd, not on powershell. Cmd then says invalid node and pc name. – Filip Cieślik Oct 15 at 17:55
  • 1
    Please be more descriptive than "does not work". The command you issued only works on Windows 8.0+. It also does not work if you are using a retail or volume license key – Ramhound Oct 15 at 18:14
up vote 0 down vote accepted

One from the past.

How to get the Windows product key without using third party software

If you lost, cannot retrieve or forgot where you had stored the product key of your Windows 8.1, Windows 8 or Windows 7 OS, do not despair. I would like to show you a simple solution to extract your product key from the OS installed on your PC without using any third party software.

function Get-WindowsKey 
{
    ## function to retrieve the Windows Product Key from any PC
    ## by Jakob Bindslet (jakob@bindslet.dk)
    param ($targets = ".")
    $hklm = 2147483650
    $regPath = "Software\Microsoft\Windows NT\CurrentVersion"
    $regValue = "DigitalProductId"
    Foreach ($target in $targets) {
        $productKey = $null
        $win32os = $null
        $wmi = [WMIClass]"\\$target\root\default:stdRegProv"
        $data = $wmi.GetBinaryValue($hklm,$regPath,$regValue)
        $binArray = ($data.uValue)[52..66]
        $charsArray = "B","C","D","F","G","H","J","K","M","P","Q","R","T","V","W","X","Y","2","3","4","6","7","8","9"
        ## decrypt base24 encoded binary data
        For ($i = 24; $i -ge 0; $i--) {
            $k = 0
            For ($j = 14; $j -ge 0; $j--) {
                $k = $k * 256 -bxor $binArray[$j]
                $binArray[$j] = [math]::truncate($k / 24)
                $k = $k % 24
            }
            $productKey = $charsArray[$k] + $productKey
            If (($i % 5 -eq 0) -and ($i -ne 0)) {
                $productKey = "-" + $productKey
            }
        }
        $win32os = Get-WmiObject Win32_OperatingSystem -computer $target
        $obj = New-Object Object
        $obj | Add-Member Noteproperty Computer -value $target
        $obj | Add-Member Noteproperty Caption -value $win32os.Caption
        $obj | Add-Member Noteproperty CSDVersion -value $win32os.CSDVersion
        $obj | Add-Member Noteproperty OSArch -value $win32os.OSArchitecture
        $obj | Add-Member Noteproperty BuildNumber -value $win32os.BuildNumber
        $obj | Add-Member Noteproperty RegisteredTo -value $win32os.RegisteredUser
        $obj | Add-Member Noteproperty ProductID -value $win32os.SerialNumber
        $obj | Add-Member Noteproperty ProductKey -value $productkey
        $obj
    }
}

Not the answer you're looking for? Browse other questions tagged or ask your own question.