There are a lot of script examples out there and even key recovery tools that promise to return the full product key, but in many cases, the returned key is not your windows product key.

When you resort to key recovery tools, you typically lost your product key, so there is no easy way for you to check whether the promised key returned by key recovery scripts or tools is correct or not.

Fortunately, WMI can at least return a “partial” product key. This way, you can verify that a recovered key in fact is valid.

The SoftwareLicensingProduct WMI class returns rich information about licensing status of most Microsoft products. This line below dumps all licensing information for all Microsoft products that start with “Windows” and have a license status other than 0:

PS> Get-CimInstance -ClassName SoftwareLicensingProduct -Filter 'Name LIKE "Windows%" AND LicenseStatus>0' 

ADActivationCsvlkPid                           : 
ADActivationCsvlkSkuId                         : 
ADActivationObjectDN                           : 
ADActivationObjectName                         : 
ApplicationID                                  : 55c92734-d682-4d71-983e-d6ec3f16059f
AutomaticVMActivationHostDigitalPid2           : 
AutomaticVMActivationHostMachineName           : 
AutomaticVMActivationLastActivationTime        : 01.01.1601 01:00:00
Description                                    : Windows(R) Operating System, OEM_DM channel
DiscoveredKeyManagementServiceMachineIpAddress : 
DiscoveredKeyManagementServiceMachineName      : 
DiscoveredKeyManagementServiceMachinePort      : 0
EvaluationEndDate                              : 01.01.1601 01:00:00
ExtendedGrace                                  : 4294967295
GenuineStatus                                  : 0
GracePeriodRemaining                           : 0
IAID                                           : 
ID                                             : bd3762d7-270d-4760-8fb3-d829ca45278a
IsKeyManagementServiceMachine                  : 0
KeyManagementServiceCurrentCount               : 4294967295
KeyManagementServiceFailedRequests             : 4294967295
KeyManagementServiceLicensedRequests           : 4294967295
KeyManagementServiceLookupDomain               : 
KeyManagementServiceMachine                    : 
KeyManagementServiceNonGenuineGraceRequests    : 4294967295
KeyManagementServiceNotificationRequests       : 4294967295
KeyManagementServiceOOBGraceRequests           : 4294967295
KeyManagementServiceOOTGraceRequests           : 4294967295
KeyManagementServicePort                       : 0
KeyManagementServiceProductKeyID               : 
KeyManagementServiceTotalRequests              : 4294967295
KeyManagementServiceUnlicensedRequests         : 4294967295
LicenseDependsOn                               : 
LicenseFamily                                  : Professional
LicenseIsAddon                                 : False
LicenseStatus                                  : 1
LicenseStatusReason                            : 1074066433
MachineURL                                     : 
Name                                           : Windows(R), Professional edition
OfflineInstallationId                          : 563276155667058052465840741114524545879016766601431504369777043
PartialProductKey                              : WFG6P

Unfortunately, this call takes a long time to complete. To speed it up, tell WMI what you are after so that the call won’t calculate expensive information that you don’t need. The call below reads only the PartialProductKey property from the required instances and is a lot faster:

PS> Get-CimInstance -Query 'Select PartialProductKey From SoftwareLicensingProduct Where Name LIKE "Windows%" AND LicenseStatus>0' | Select-Object -ExpandProperty PartialProductKey


Twitter This Tip! ReTweet this Tip!