Recover SharePoint 2007 / 2010 / 2013 Product Key using PowerShell

Ever wanted to recover your SharePoint 2007 or SharePoint 2010 Product key from an existing SharePoint Farm? Sure! It’s encoded and stored in the system registry, and we can recover the license key with PowerShell. Here is the code:

PowerShell Script to Recover SharePoint 2007 Product key:

function Get-SP2007ProductKey {    
    $map="BCDFGHJKMPQRTVWXY2346789" 
    $value = (get-itemproperty "HKLM:\SOFTWARE\Microsoft\Office\12.0\Registration\{90120000-110D-0000-1000-0000000FF1CE}").digitalproductid[0x34..0x42]  
    $ProductKey = "";
    for ($i = 24; $i -ge 0; $i--) { 
      $r = 0 
      for ($j = 14; $j -ge 0; $j--) { 
        $r = ($r * 256) -bxor $value[$j] 
        $value[$j] = [math]::Floor([double]($r/24)) 
        $r = $r % 24 
      } 
      $ProductKey = $map[$r] + $ProductKey 
      if (($i % 5) -eq 0 -and $i -ne 0) { 
        $ProductKey = "-" + $ProductKey 
      } 
    } 
    $ProductKey
} 

#Call the function
Get-SP2007ProductKey 

PowerShell Script to Recover SharePoint 2010 Product Key:

function Get-SP2010ProductKey {    
    $map="BCDFGHJKMPQRTVWXY2346789" 
    $value = (get-itemproperty "HKLM:\SOFTWARE\Microsoft\Office\14.0\Registration\{90140000-110D-0000-1000-0000000FF1CE}").digitalproductid[0x34..0x42]  
    $ProductKey = ""  
    for ($i = 24; $i -ge 0; $i--) { 
      $r = 0 
      for ($j = 14; $j -ge 0; $j--) { 
        $r = ($r * 256) -bxor $value[$j] 
        $value[$j] = [math]::Floor([double]($r/24)) 
        $r = $r % 24 
      } 
      $ProductKey = $map[$r] + $ProductKey 
      if (($i % 5) -eq 0 -and $i -ne 0) { 
        $ProductKey = "-" + $ProductKey 
      } 
    } 
    $ProductKey
} 
#Call the function
Get-SP2010ProductKey

Retrieve SharePoint 2013 Product Key:

For SharePoint 2013, Set the $value parameter in the above code to :

$value = (get-itemproperty "HKLM:\SOFTWARE\Microsoft\Office\15.0\Registration\{90150000-110D-0000-1000-0000000FF1CE}").digitalproductid[0x34..0x42]    

And run the script!

Salaudeen Rajack

Salaudeen Rajack - Information Technology Expert with Two-decades of hands-on experience, specializing in SharePoint, PowerShell, Microsoft 365, and related products. He has held various positions including SharePoint Architect, Administrator, Developer and consultant, has helped many organizations to implement and optimize SharePoint solutions. Known for his deep technical expertise, He's passionate about sharing the knowledge and insights to help others, through the real-world articles!

10 thoughts on “Recover SharePoint 2007 / 2010 / 2013 Product Key using PowerShell

  • It works on my 2013 Enterprise servers, but on my 2013 Foundation servers I get this error:

    get-itemproperty : Cannot find path
    ‘HKLM:\SOFTWARE\Microsoft\Office\15.0\Registration\{90150000-110D-0000-1000-0000000FF1CE}’
    because it does not exist.
    At line:3 char:13
    + $value = (get-itemproperty “HKLM:\SOFTWARE\Microsoft\Office\15.0\Re …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (HKLM:\SOFTWARE\…0-0000000FF1CE}:String) [Get-It
    emProperty], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand

    and then a dozen screens of “cannot index into a null array” errors.

    Any idea why this doesn’t work on Foundation?

    Reply
  • What is $map=”BCDFGHJKMPQRTVWXY2346789″ key?

    Reply
  • Amazing, I used your script to get the key from an old server with SP2010 and it worked.

    Thank you very much

    Reply
  • it does not work. It recover the key for OS not SharePoint

    Reply
  • awesome.. it works. i received the key from my prod.server But when i apply teh same prod. key for a new VM thats meant for DEV env. , its not working.
    is there any criteria from MS, such that, a license key thats used for prod. can not be used for a another dev. env ?

    thnx
    SaMol

    Reply
  • Does not work. It Recovers the key of the OS.

    Reply
  • Does anyone know what the $value would be for Project Server 2010 please?

    Reply
  • excellect . thankyou

    Reply
  • Fantastic ! Thank you

    Reply
  • Awesome, its works

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *