รับหมายเลขผลิตภัณฑ์ HP ผ่าน Powershell


8

ฉันรวบรวมสคริปต์ PowerShell Lookup ที่แข็งแกร่งของ HP ไว้ด้วยกัน อย่างไรก็ตามฉันไม่สามารถหาวิธีรับหมายเลขผลิตภัณฑ์ของระบบ HP ในกระบวนการอัตโนมัติ ดังนั้น...

ฉันจะรับหมายเลขผลิตภัณฑ์ HP (ไม่ใช่หมายเลขซีเรียล) ผ่าน PowerShell ได้อย่างไร แม้ว่าฉันจะต้องการทำอะไรกับคำสั่ง Windows และ PowerShell ที่ติดตั้งในตัวเท่านั้น แต่ฉันเปิดรับแนวคิดอื่น ๆ ในท้ายที่สุดเป้าหมายสูงสุดคือการดึงหมายเลขผลิตภัณฑ์ในวิธีที่น่าเชื่อถือที่สุดและรุกรานน้อยที่สุด (เช่นการติดตั้งซอฟต์แวร์ที่ 3)

การแก้ไขปัญหา

พยายาม:

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


หมายเลขผลิตภัณฑ์ที่คุณคาดว่าจะมีอยู่ในรายการเมื่อเรียกใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้หรือไม่ wmic csproduct list /format:list/wmic computersystem list /format:list
and31415

Nope ฉันค่อนข้างมั่นใจว่ามันถูกเก็บไว้ใน 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 สินค้าที่อยู่ในรีจิสทรีเพื่อให้สามารถเรียกดูได้ใน PowerShell รายการHKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS SystemSKU

ข้อมูลเพิ่มเติมและสคริปต์ที่สามารถพบได้ในบทความ:
วิธีการ: ค้นหา HP สินค้าจำนวนทั้งหมดของคุณ HP เซิร์ฟเวอร์โดยใช้ PowerShell

วิธีที่ 2: root \ wmi - MS_SystemInformation

ระดับ MS_SystemInformation SystemSKUมีตัวเลขผลิตภัณฑ์ในสมาชิก
(สมมุติว่ามันได้รับจากรีจิสตรีเหมือนกับวิธีแรก)

สำหรับข้อมูลเพิ่มเติมโปรดดูที่บล็อกของริชาร์ด Siddaway

วิธีที่ 3: คลาส Win32_BIOS

ส่วนต่อไปนี้จะค้นหาหมายเลขผลิตภัณฑ์สำหรับคอมพิวเตอร์บางเครื่อง ผ่านการทดสอบกับ Dell

Get-WmiObject Win32_BIOS | Select-Object SerialNumber

ข้อมูลอ้างอิง Microsoft จะพบได้ในบทความระดับ Win32_BIOS


1
คลาส Win32_BIOS มีหมายเลขประจำเครื่อง แต่นั่นไม่เหมือนกับหมายเลขผลิตภัณฑ์ของ HP (P / N) ซึ่งฉันได้ค้นพบเมื่อเร็ว ๆ นี้คือเรียก System SKU โดย Microsoft และ Product SKU ของ SMBios รีจิสทรีและคลาส MS_SystemInformation จะเก็บ P / NI นี้ที่กำลังมองหา
SgtOJ

2

นี่คือการทดสอบในแล็ปท็อป HP ฉันคิดว่า HP "หมายเลขผลิตภัณฑ์" เรียกว่า SystemSKUNumber ใน win32_computersystem WMI ทดสอบกับแล็ปท็อป HP ของฉัน

Get-WmiObject win32_computersystem | Select-Object SystemSKUNumber

จะส่งผลให้:

SystemSKUNumber
---------------
J9A12EA#ABN

0

หากมีผู้อื่นพบคำถามนี้ win32_computersystem ทั้งหมดจะไม่ปรากฏว่ามีหมายเลขผลิตภัณฑ์สำหรับเซิร์ฟเวอร์โดยเฉพาะ ฉันไม่สามารถค้นหาข้อมูลผ่านทาง WMI ได้จริง แต่กลับกลายเป็นว่าฉันได้รับหมายเลขผลิตภัณฑ์และหมายเลขซีเรียลสำหรับเซิร์ฟเวอร์จำนวนหนึ่ง (สเปรดชีตมีการจัดรูปแบบที่น่ากลัวดังนั้นทั้งสองฟิลด์จึงดูเหมือนสตริงใหญ่จนกระทั่งบ่ายของฉัน กาแฟเตะเข้า)


0
$PN = (Get-WmiObject -Namespace Root\wmi MS_SystemInformation -ComputerName $PC -ErrorAction SilentlyContinue ).SystemSKU

Write-host $PN

ลองเพิ่มการอ้างอิงถึงคำตอบนี้เพื่อสนับสนุนสิ่งที่คุณระบุเพื่ออธิบายว่าทำไมการทำงานนี้
Pimp Juice 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สามารถถูกแทนที่โดยตรงด้วยชื่อคอมพิวเตอร์ ตัวอย่าง...

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 ไม่ได้กำหนดค่าบนไคลเอนต์คุณอาจพบปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.