Get HP Product Number via Powershell
Mia Lopez
I have put together a robust HP Warrant Lookup PowerShell script. However, I cannot figure out how to get a HP system's product number in an automated process. So...
How can I get HP product number (not the serial number) via PowerShell? Although I would like to do with only built-in out-of-the-box Windows and PowerShell commands, I am open to other ideas. In the end, the ultimate goal is retrieve the product number in the most reliable and least invasive way possible (i.e. installing 3rd software).
Troubleshooting
Tried:
Get-WmiObject Win32_ComputerSystem | Select-Object OEMStringArray
Result:
{ABS 70/71 79 7A 7B 7C, CMS v01.4A, HP_Mute_LED_0,
... But expecting to find XT908UT#ABA
6 Answers
Here are some methods that work for various computer models.
Method 1 : Registry
The HP product number is in the registry so can be retrieved in PowerShellHKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOSitem SystemSKU.
More information and script can be found in the article :
How to: Find the HP Product Number of all your HP server using powershell.
Method 2 : root\wmi – MS_SystemInformation
Class MS_SystemInformation contains the product number in its member SystemSKU.
(Presumably it gets it from the registry as in the first method.)
For more info see Richard Siddaway's Blog.
Method 3 : Class Win32_BIOS
The following fragment finds the product number for some computer makes. Tested on Dell.
Get-WmiObject Win32_BIOS | Select-Object SerialNumberThe Microsoft reference information is found in the article Win32_BIOS class.
1This is tested on a HP Laptop. I think HP "Product number" is called SystemSKUNumber in win32_computersystem WMI. Tested on my HP laptop.
Get-WmiObject win32_computersystem | Select-Object SystemSKUNumberWill result in:
SystemSKUNumber
---------------
J9A12EA#ABN If anyone else comes across this question, be advised, the entirety of win32_computersystem doesn't appear to contain the product number for servers, specifically. I was unable to actually find the information via WMI, but it turns out I was actually given the product number AND serial numbers for a number of servers (the spreadsheet was horribly formatted, so the two fields just looked like one big string until my afternoon coffee kicked in).
$PN = (Get-WmiObject -Namespace Root\wmi MS_SystemInformation -ComputerName $PC -ErrorAction SilentlyContinue ).SystemSKU
Write-host $PN 1 Works on Windows 7 & Windows 10 From another user that posted. @harrymc
#Open Powershell and type the following.
$Server='ComputerName'
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server)
$regkey = $reg.OpenSubkey("HARDWARE\\DESCRIPTION\\System\\BIOS")
$SystemSku = $regkey.GetValue("SystemSku")
$SystemSkuor try
$Server='ComputerName'
Get-WmiObject -ClassName CIM_System -ComputerName $Server| Select-object -ExpandProperty SystemSKUNumber$Server can be directly replaced by a ComputerName. example...
Get-WmiObject -ClassName CIM_System -ComputerName PC001 | select SystemSKUNumberKeep in mind if you are on a domain you may need to provide credentials by either using an invoke-command or -credential parameter.
Get-WmiObject -Credential Domain\UserID -ClassName CIM_System -ComputerName $Serveror
Invoke-Command -Credential Domain\UserID -ComputerName PC001 -ScriptBlock {Get-WmiObject -Credential -ClassName CIM_System}if WinRm is not configured on client, you may experience issues.
1simply from cmd line:
wmic /namespace:\\root\wmi path MS_SystemInformation 2