Получить номер продукта HP через Powershell

8

Я собрал надежный сценарий HP Warrant Lookup PowerShell. Однако я не могу понять, как получить номер продукта системы HP в автоматизированном процессе. Так...

Как я могу получить номер продукта HP (не серийный номер) через PowerShell? Хотя я хотел бы использовать только встроенные команды Windows и PowerShell, я открыт для других идей. В конце концов, конечной целью является получение номера продукта самым надежным и наименее инвазивным способом (т.е. установка третьего программного обеспечения).

Поиск проблемы

Пытался:

Get-WmiObject Win32_ComputerSystem | Select-Object OEMStringArray

Результат:

{ABS 70/71 79 7A 7B 7C, CMS v01.4A, HP_Mute_LED_0, www.hp.com}

... но ожидая найти XT908UT#ABA

SgtOJ
источник
Указан ли номер продукта, который вы ожидали, выполнив одну из следующих команд? wmic csproduct list /format:list/wmic computersystem list /format:list
and31415
Нету. Я почти уверен, что он хранится в SMBios, но я не знаю надежного способа получить его.
SgtOJ
1
В этой статье говорится, что номер указан в реестре, HKLM\HARDWARE\DESCRIPTION\System\BIOS\SystemSKUпоэтому его можно получить в PowerShell. Этот говорит wmic /namespace:\\root\wmi path MS_SystemInformation. Есть ли у вас что-нибудь из этого?
harrymc
На компьютере Dell я могу использовать Get-WmiObject Win32_BIOS | Select-Object SerialNumber(у меня нет HP, чтобы проверить это).
harrymc
@harrymc - Похоже, что реестр и MS_SystemInformation идут! Спасибо, вы должны опубликовать ответ ответ. Я разочарован в себе, потому что я наткнулся на ту же статью (метод реестра), но сорвал ее.
SgtOJ

Ответы:

8

Вот некоторые методы, которые работают для различных моделей компьютеров.

Способ 1: Реестр

Номер продукта HP указан в реестре, поэтому его можно найти в HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS элементе PowerShell SystemSKU.

Дополнительную информацию и сценарий можно найти в статье:
Как: найти номер продукта HP для всех серверов HP с помощью powershell .

Способ 2: root \ wmi - MS_SystemInformation

Класс MS_SystemInformation содержит номер продукта в своем члене SystemSKU.
(Предположительно он получает его из реестра, как в первом методе.)

Для получения дополнительной информации см . Блог Ричарда Сиддэуэй .

Способ 3: класс Win32_BIOS

Следующий фрагмент находит номер продукта для некоторых марок компьютеров. Проверено на Dell.

Get-WmiObject Win32_BIOS | Select-Object SerialNumber

Справочная информация Microsoft находится в статье класса Win32_BIOS .

harrymc
источник
1
Класс Win32_BIOS имеет серийный номер, но он отличается от номера продукта HP (P / N). Я недавно обнаружил, что это называется System SKU от Microsoft и Product SKU от SMBios. Реестр и класс MS_SystemInformation хранят этот P / NI, который я ищу.
сержант
2

Это проверено на ноутбуке HP. Я думаю, что HP "Номер продукта" называется SystemSKUNumber в Win32_computersystem WMI. Проверено на моем ноутбуке HP.

Get-WmiObject win32_computersystem | Select-Object SystemSKUNumber

Приведет к:

SystemSKUNumber
---------------
J9A12EA#ABN
OlofL
источник
0

Если кто-то еще сталкивался с этим вопросом, имейте в виду, что вся система win32_computersystem, по-видимому, не содержит номер продукта для серверов. Я не смог найти информацию через WMI, но оказалось, что мне фактически дали номер продукта и серийные номера для ряда серверов (электронная таблица была ужасно отформатирована, поэтому два поля просто выглядели как одна большая строка до полудня кофе пнул).

Стив Фриман
источник
0
$PN = (Get-WmiObject -Namespace Root\wmi MS_SystemInformation -ComputerName $PC -ErrorAction SilentlyContinue ).SystemSKU

Write-host $PN
Седрик
источник
Подумайте о том, чтобы добавить ссылку на этот ответ в поддержку того, что вы заявляете, чтобы объяснить, почему это работает.
Сок Pimp IT
-1

Работает на Windows 7 и Windows 10 от другого пользователя, который разместил. @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")

$SystemSku

или попробуйте

$Server='ComputerName'

Get-WmiObject -ClassName CIM_System -ComputerName $Server| Select-object -ExpandProperty SystemSKUNumber

$Serverможет быть напрямую заменено на ComputerName. пример...

Get-WmiObject -ClassName CIM_System -ComputerName PC001 | select SystemSKUNumber

Имейте в виду, что если вы находитесь в домене, вам может потребоваться предоставить учетные данные с помощью параметра invoke-commandили -credential.

Get-WmiObject -Credential Domain\UserID -ClassName CIM_System -ComputerName $Server

или же

Invoke-Command -Credential Domain\UserID -ComputerName PC001 -ScriptBlock {Get-WmiObject -Credential -ClassName CIM_System}

если WinRm не настроен на клиенте, могут возникнуть проблемы.

DubRub135
источник