วิธีการค้นหารหัสฮาร์ดแวร์ USB โดยใช้ PowerShell และเครื่องมืออื่นๆ

การปรับปรุงครั้งล่าสุด: 17/12/2025
ผู้แต่ง: ไอแซก
  • El ฮาร์ดแวร์ รหัสประจำตัว (ID) จะใช้ระบุอุปกรณ์แต่ละชิ้นอย่างไม่ซ้ำกัน และ Windows เขาใช้มันเพื่อ ไดรเวอร์ใบอนุญาตและความปลอดภัย
  • PowerShell ช่วยให้คุณสามารถแสดงรายการและกรองข้อมูลได้อย่างง่ายดาย USB ระบุอุปกรณ์ด้วยคำสั่ง cmdlet เช่น Get-PnpDevice และคลาส WMI
  • สามารถติดตามอุปกรณ์ USB ได้โดยอัตโนมัติด้วยสคริปต์ที่ส่งข้อมูลไปยังเซิร์ฟเวอร์กลางผ่าน REST API
  • เครื่องมือเช่น ตัวจัดการอุปกรณ์ และ USBView ช่วยให้สามารถอ่าน VID/PID และฟิลด์สำคัญอื่นๆ ของตัวอธิบาย USB ได้

ค้นหารหัสฮาร์ดแวร์ USB จาก PowerShell

หากคุณเคยเสียบไดรฟ์ USB แล้วคอมพิวเตอร์เริ่มทำงานผิดปกติ หรือ Windows แสดงข้อความแสดงข้อผิดพลาดที่ไม่ชัดเจน ปัญหานั้นอาจเกี่ยวข้องกับ... รหัสระบุฮาร์ดแวร์ของอุปกรณ์ USB (Hardware ID)การรู้วิธีค้นหา ID นั้นโดยใช้ PowerShell และเครื่องมือในตัวอื่นๆ ของ Windows เป็นทักษะที่จะช่วยลดปัญหาปวดหัวได้มาก โดยเฉพาะในสภาพแวดล้อมทางธุรกิจที่ไม่อนุญาตให้ติดตั้งซอฟต์แวร์จากภบุคคลที่สาม

นอกจากนี้ ยังเป็นข้อบังคับในหลายบริษัทอีกด้วย ควบคุมการเชื่อมต่ออุปกรณ์ USB ลงทะเบียนรหัสประจำตัว และตรวจสอบย้อนกลับได้ เพื่อความปลอดภัยและการปฏิบัติตามกฎระเบียบ ตั้งแต่การป้องกันการรั่วไหลของข้อมูลไปจนถึงการปิดกั้นการเข้าถึงของ... มัลแวร์ เมื่อต้องรับมือกับไดรฟ์ USB ที่ติดไวรัส สิ่งสำคัญคือต้องระบุอุปกรณ์แต่ละตัวให้ถูกต้อง ในที่นี้คุณจะได้เห็นรายละเอียดอย่างครบถ้วนเกี่ยวกับวิธีการทำงานของ HWID วิธีการรับ USB ID โดยใช้ PowerShell และเครื่องมืออื่นๆ และวิธีการใช้ข้อมูลดังกล่าวทั้งในการวินิจฉัยปัญหาและการติดตามอุปกรณ์โดยอัตโนมัติ

รหัสฮาร์ดแวร์ (HWID) คืออะไร และทำไมคุณถึงควรสนใจ?

El รหัสฮาร์ดแวร์ หรือ HWID คือตัวระบุแบบดิจิทัลที่ไม่ซ้ำกัน ซึ่งเชื่อมโยงกับส่วนประกอบทางกายภาพแต่ละชิ้น ส่วนประกอบต่างๆ ของคอมพิวเตอร์ของคุณ ได้แก่ เมนบอร์ด ฮาร์ดไดรฟ์ การ์ดจอ อะแดปเตอร์เครือข่าย ตัวควบคุม USB เป็นต้น มักเรียกกันว่า "ลายนิ้วมือ" ของอุปกรณ์ เพราะมันช่วยแยกแยะอุปกรณ์นั้นออกจากอุปกรณ์อื่นๆ ได้ แม้ว่าคอมพิวเตอร์สองเครื่องจะดูเหมือนกันทุกประการก็ตาม

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

ตัวระบุนี้ไม่ได้ถูกคิดค้นโดย Windows โดยไม่มีเหตุผล: ฮาร์ดแวร์แต่ละชิ้นจะมีรหัสประจำตัวบันทึกไว้ในเฟิร์มแวร์ (ตัวอย่างเช่น ใน EEPROM ของอุปกรณ์) ระบบปฏิบัติการจะอ่านข้อมูลนั้น และจากข้อมูลนั้นจะสร้างสตริงตัวระบุซึ่งจะปรากฏใน Device Manager, PowerShell หรือใน คำสั่ง ในขณะที่ WMIC.

เมื่อคุณติดตั้งระบบปฏิบัติการเป็นครั้งแรก ระบบปฏิบัติการ Windows จะบันทึกภาพรวมของการกำหนดค่าฮาร์ดแวร์นั้นไว้ และสร้างชุดตัวระบุที่เชื่อมโยงกับเครื่องนั้น หากคุณเปลี่ยนชิ้นส่วนสำคัญในภายหลัง เช่น เมนบอร์ด ชุด HWID อาจเปลี่ยนแปลงไปมากพอที่จะทำให้ต้องตรวจสอบใบอนุญาตอีกครั้ง หรืออาจต้องทำการเปิดใช้งานระบบใหม่ในบางผลิตภัณฑ์

วิธีสร้างตัวระบุอุปกรณ์ USB

ในกรณีของอุปกรณ์ USB นั้น HWID จะได้มาจากตัวอธิบายที่เฉพาะเจาะจงมาก: ตัวอธิบายอุปกรณ์ USB (USB_DEVICE_DESCRIPTOR)เป็นโครงสร้างข้อมูลที่อุปกรณ์ USB ทุกตัวต้องมี และใช้เพื่ออธิบายคุณลักษณะพื้นฐานของอุปกรณ์นั้น เช่น คลาส เวอร์ชัน USB ที่รองรับ ผู้ผลิต ผลิตภัณฑ์ เป็นต้น

ภายในคำอธิบายนั้นมีฟิลด์สำคัญสองฟิลด์ ได้แก่: idVendor และ idProductส่วนแรกระบุผู้ผลิต (รหัสผู้จำหน่าย หรือ VID) และส่วนที่สองระบุรุ่นผลิตภัณฑ์เฉพาะ (รหัสผลิตภัณฑ์ หรือ PID) ระบบปฏิบัติการ Windows ใช้ค่าเหล่านี้ในการสร้างสตริง เช่น USB\VID_XXXX&PID_YYYY… จากนั้นคุณจะเห็นรหัสฮาร์ดแวร์ (Hardware IDs) ใน Device Manager

ตัวอย่างเช่น เว็บแคม USB ของ Microsoft อาจมีลักษณะดังนี้ idVendor = 0x045E (ไมโครซอฟต์) และ idProduct = 0x0728ค่าทั้งสองนั้น พร้อมด้วยหมายเลขเวอร์ชันของอุปกรณ์ (bcdDevice) และสาขาอื่นๆ รวมกันเพื่อก่อให้เกิด รหัสฮาร์ดแวร์และรหัสที่เข้ากันได้ ซึ่ง Windows จะจับคู่กับไดรเวอร์ที่ถูกต้อง

สนาม bcdUSB ตัวระบุนี้แสดงถึงเวอร์ชันของข้อกำหนด USB ที่อุปกรณ์นั้นปฏิบัติตาม (ตัวอย่างเช่น 0x0200 สำหรับ USB 2.0) ซึ่งจะช่วยให้ชุดไดรเวอร์ USB ทราบวิธีการสื่อสารกับอุปกรณ์ ความเร็วที่รองรับ และตัวเลือกการกำหนดค่าที่มีให้เลือก

รายละเอียดที่สำคัญคือ อุปกรณ์ USB ไม่ควรเปลี่ยนแปลงข้อมูลตัวระบุขณะที่เชื่อมต่ออยู่แม้แต่ตอนที่สถานะพลังงานเปลี่ยนไปก็ยังไม่เปลี่ยนแปลง สิ่งที่อาจเกิดขึ้นคือมันแสดงข้อมูลที่แตกต่างกันไปขึ้นอยู่กับว่าเชื่อมต่อด้วยความเร็วสูงหรือความเร็วเต็มที่ แต่สิ่งนั้นจะถูกกำหนดไว้แล้วในขณะที่เชื่อมต่อ

จากฝั่งคอนโทรลเลอร์ โฮสต์จะได้รับตัวอธิบายนี้ผ่านทาง GET_DESCRIPTOR คือการถ่ายโอนข้อมูลควบคุมที่ส่งไปยังอุปกรณ์ใน Windows ไดรเวอร์โหมดเคอร์เนล (KMDF/UMDF/WDM) สามารถร้องขอตัวอธิบายนั้นได้อย่างเป็นทางการผ่าน URB (USB request blocks) หรือ API ของเฟรมเวิร์ก แต่สิ่งนั้นเป็นเรื่องของการพัฒนาไดรเวอร์ ไม่ใช่การบริหารจัดการผ่าน PowerShell

ดูรหัสฮาร์ดแวร์ USB โดยใช้เครื่องมือแบบกราฟิกของ Windows

ดูรหัสฮาร์ดแวร์ USB ใน Windows

ก่อนที่เราจะเจาะลึกเข้าไปในเรื่อง PowerShell เราควรจำไว้ว่า... ระบบปฏิบัติการ Windows มีวิธีการแสดงผล HWID ของอุปกรณ์ต่างๆ ได้อย่างง่ายดายหลายวิธีด้วยภาพกราฟิกโดยเฉพาะอย่างยิ่งจะมีประโยชน์เมื่อคุณต้องการระบุอุปกรณ์เฉพาะเจาะจงเท่านั้น

  7 โปรแกรมที่ดีที่สุดในการวัดอุณหภูมิพีซี

1. ตัวจัดการอุปกรณ์

วิธีที่เร็วที่สุดโดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว คือการใช้ Windows Device Managerสามารถใช้งานร่วมกับฮาร์ดแวร์ทุกประเภท รวมถึงอุปกรณ์ USB ได้ การเก็บรักษาเครื่องพิมพ์ เว็บแคม ฯลฯ

  • เปิดตัวจัดการอุปกรณ์ โดยการกดปุ่ม Win + X แล้วเลือก “Device Manager” หรือโดยการค้นหา “devmgmt.msc”
  • ค้นหาส่วนประกอบ เช่น ใน “ตัวควบคุมบัสอนุกรมสากล” หรือ “ฮาร์ดดิสก์ไดรฟ์” ถ้าเป็นไดรฟ์ USB
  • คลิกขวาที่อุปกรณ์ที่มีปัญหาแล้วป้อนคำสั่ง สรรพคุณ.
  • ไปที่แท็บ รายละเอียด.
  • ในเมนูแบบเลื่อนลง “คุณสมบัติ” ให้เลือก รหัสฮาร์ดแวร์.

คุณจะเห็นรายการสตริงต่างๆ โดยสตริงที่เฉพาะเจาะจงที่สุดมักจะประกอบด้วย VID, PID และบางครั้งอาจมีหมายเลขซีเรียลหรือ SUBSYS สตริงเหล่านี้คือสตริงที่คุณสามารถนำไปใช้ได้ สคริปต์หรือการค้นหาไดรเวอร์โดยคัดลอกมาอย่างถูกต้องตรงตามต้นฉบับทุกประการ

2. หน้าต่าง Command Prompt พร้อม WMIC

หากคุณต้องการใช้งานผ่านคอนโซล แต่ยังไม่อยากใช้ PowerShell คุณสามารถใช้ WMIC (แม้ว่าจะเลิกใช้แล้วในเวอร์ชันใหม่ๆ แต่คุณยังคงพบได้ในคอมพิวเตอร์หลายเครื่อง):

wmic path win32_pnpentity get name, deviceid

คำสั่งนี้จะแสดง อุปกรณ์ Plug and Play ทั้งหมดและ DeviceID ของอุปกรณ์เหล่านั้นนี่คือรหัสฮาร์ดแวร์ที่เราสนใจ คุณสามารถกรองข้อมูลด้วยสายตาหรือส่งออกผลลัพธ์ไปยังไฟล์เพื่อประมวลผลต่อได้

3. แอปพลิเคชันจากบุคคลที่สาม (เมื่อได้รับอนุญาต)

ในสภาพแวดล้อมที่อนุญาต เป็นเรื่องปกติที่จะใช้เครื่องมือต่างๆ เช่น CPU-Z, Speccy หรือ HWiNFO เพื่อให้ได้ภาพเอ็กซ์เรย์ระบบที่สมบูรณ์ รวมถึงการระบุชิ้นส่วนฮาร์ดแวร์ (HWID) ของส่วนประกอบต่างๆ มากมาย อย่างไรก็ตาม ในหลายบริษัท ตัวเลือกนี้ถูกห้าม ดังนั้น PowerShell กลายเป็นเครื่องมืออเนกประสงค์ที่ได้รับการยอมรับจากนโยบายด้านความปลอดภัย.

ดึงรหัสฮาร์ดแวร์ USB จาก PowerShell

PowerShell มีคำสั่ง cmdlet ที่ทรงพลังมากสำหรับการดูและกรองข้อมูลเกี่ยวกับอุปกรณ์ Plug and Play สำหรับวัตถุประสงค์ในการระบุ HWID คำสั่งที่น่าสนใจที่สุดคือ... รับอุปกรณ์ Pnpแม้ว่าคลาส WMI รุ่นเก่าจะยังคงถูกนำไปใช้ในสคริปต์เก่าบางส่วนอยู่ก็ตาม

แสดงรายการรหัสฮาร์ดแวร์ด้วยคำสั่ง Get-PnpDevice

หากต้องการดูรหัสประจำตัวของอุปกรณ์ที่ใช้งานอยู่ทั้งหมดในระบบ คุณสามารถใช้คำสั่งต่อไปนี้:

Get-PnpDevice -PresentOnly | Select-Object -Property Name,InstanceId

คำสั่งนี้ส่งคืนค่า ตารางที่มีชื่อที่เป็นมิตรของอุปกรณ์และ InstanceId ของอุปกรณ์นั้นInstanceId นั้นคือสตริงรหัสฮาร์ดแวร์ (หรือใกล้เคียงมาก) ซึ่งคุณสามารถนำไปเชื่อมโยงกับข้อผิดพลาด เหตุการณ์ของระบบ หรือการค้นหาไดรเวอร์ได้

หากคุณต้องการมุ่งเน้นเฉพาะเรื่องนี้เท่านั้น อุปกรณ์ PCIตัวอย่างเช่น คุณสามารถกรองข้อมูลโดยใช้:

Get-PnpDevice | Where-Object { $_.InstanceId -match '^PCI' } | Select-Object FriendlyName, InstanceId

สำหรับอุปกรณ์ USB คุณสามารถใช้ตัวกรองที่คล้ายกันกับสตริง InstanceId โดยเปลี่ยนคำนำหน้าได้:

Get-PnpDevice | Where-Object { $_.InstanceId -like 'USB\VID_*' } | Select-Object FriendlyName, InstanceId

ตัวอย่างกรณีศึกษาในชีวิตจริง: การระบุไดรฟ์ USB ที่มีปัญหาโดยใช้รหัสประจำตัว

สถานการณ์ที่พบได้บ่อยมากมีดังนี้: คอมพิวเตอร์ของคุณค้าง คุณตรวจสอบ Event Viewer และพบการอ้างอิงถึงอุปกรณ์เช่น "USB\VID_1F75&PID_0917\8&31abfd78&0&3"คุณเข้าไปดูใน Device Manager เพื่อหา ID นั้น แต่ก็ไม่มีทางรู้ได้เลยว่ามันคืออะไรกันแน่

ตัวอย่างการปฏิบัติ: ในสถานการณ์เหล่านี้ การใช้ PowerShell เพื่อเปรียบเทียบข้อมูลจะเป็นประโยชน์อย่างมาก ตัวอย่างเช่น คุณสามารถลองค้นหาอุปกรณ์ PnP ใดๆ ที่มี InstanceId ขึ้นต้นด้วยรูปแบบดังกล่าวได้:

Get-PnpDevice -InstanceId 'USB\VID_1F75*'

หากการดำเนินการนี้ไม่แสดงผลลัพธ์ใดๆ (บางครั้งอาจเกิดขึ้นหากอุปกรณ์ไม่ได้เชื่อมต่อแล้ว) คุณสามารถตรวจสอบประวัติการใช้งานอุปกรณ์ USB โดยใช้ WMI หรือหากได้รับอนุญาต สามารถใช้เครื่องมือต่างๆ เช่น USBDeview ซึ่งจะแสดงอุปกรณ์ทั้งหมดที่เคยเชื่อมต่อ รวมถึงวันที่และพอร์ตที่เชื่อมต่อ

ดูคุณสมบัติ: หากคุณได้ผลลัพธ์แล้ว คุณสามารถต่อยอดผลลัพธ์เหล่านั้นได้ด้วย:

Get-PnpDevice -InstanceId 'USB\VID_1F75*' | Get-PnpDeviceProperty

รายการนี้ควรจะ คุณสมบัติ PnP ทั้งหมดที่เกี่ยวข้องกับอุปกรณ์อย่างไรก็ตาม หากไม่มีอุปกรณ์อยู่ หรือมีปัญหาเรื่องสิทธิ์การเข้าถึง คุณอาจได้รับผลลัพธ์ว่างเปล่าหรือไม่สมบูรณ์ หากต้องการส่งออกข้อมูลไปยังไฟล์ CSV แนวคิดคือ:

Get-PnpDevice -InstanceId 'USB\VID_1F75*' | Get-PnpDeviceProperty | Export-Csv -Path 'DevDetails.csv' -NoTypeInformation

หากไฟล์ CSV ดูเหมือนว่างเปล่า โดยส่วนใหญ่แล้วหมายความว่า... ในขณะนั้นยังไม่มีอุปกรณ์ใดตรงกับตัวกรอง หรือคำสั่ง cmdlet ไม่สามารถอ่านคุณสมบัติได้ (เนื่องจากสิทธิ์ไม่เพียงพอ หรืออุปกรณ์ไม่ตอบสนอง)

ดูอุปกรณ์จัดเก็บข้อมูล USB ที่เชื่อมต่อด้วย WMI

อีกกรณีหนึ่งที่พบได้บ่อยคือ การต้องการทราบข้อมูล ขณะนี้มีอุปกรณ์ USB หรือแฟลชไดรฟ์ใดเชื่อมต่ออยู่บ้าง?วิธีลัดแบบคลาสสิกใน PowerShell คือการใช้คลาส WMI ไดรฟ์ดิสก์ Win32_ การกรองตามประเภทอินเทอร์เฟซ:

Get-WmiObject Win32_DiskDrive | Where-Object { $_.InterfaceType -eq 'USB' }

หากคุณต้องการให้ผลลัพธ์อ่านง่ายและส่งออกได้สะดวกยิ่งขึ้น คุณสามารถแสดงเฉพาะฟิลด์ที่เกี่ยวข้องโดยใช้ PSCustomObject ได้:

Get-WmiObject Win32_DiskDrive | Where-Object { $_.InterfaceType -eq 'USB' } | ForEach-Object {
[PSCustomObject]@{
DeviceID = $_.DeviceID
โมเดล = $_.โมเดล
หมายเลขซีเรียล = (Get-WmiObject Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).SerialNumber
}
}

ในที่นี้ วัตถุที่กำหนดเองแต่ละชิ้นจะแสดงอยู่ ตัวระบุอุปกรณ์ รุ่น และหมายเลขประจำเครื่อง (เมื่อผู้ผลิตแสดงผลอย่างถูกต้อง) นี่เป็นพื้นฐานที่มีประโยชน์มากสำหรับสคริปต์การจัดการสินค้าคงคลังและการติดตาม

ตรวจสอบและบันทึกข้อมูลอุปกรณ์ USB โดยอัตโนมัติด้วย PowerShell

ในสภาพแวดล้อมขององค์กร เป็นเรื่องปกติมากที่ฝ่ายไอทีจะต้องการ ระบบลงทะเบียนส่วนกลางสำหรับอุปกรณ์ USB ที่เชื่อมต่อทั้งหมด สำหรับแต่ละเครื่อง: ต้องระบุข้อมูลว่าอุปกรณ์นั้นคืออะไร เชื่อมต่อเมื่อใด เชื่อมต่อจากคอมพิวเตอร์เครื่องใด เป็นต้น ข้อมูลนี้ช่วยในการตรวจจับอุปกรณ์ที่ไม่ได้รับอนุญาต ตรวจสอบเหตุการณ์ด้านความปลอดภัย และปฏิบัติตามนโยบายภายในองค์กร

  วิธีแก้ไขข้อผิดพลาดการจดจำอุปกรณ์ USB ใน Windows

วิธีที่ยืดหยุ่นในการทำเช่นนี้โดยไม่ต้องขอใบอนุญาตเพิ่มเติมคือการติดตั้ง un ต้นฉบับ สคริปต์ PowerShell ที่รวบรวมข้อมูลที่เกี่ยวข้องจากอุปกรณ์ USB แต่ละตัวและส่งไปยังเซิร์ฟเวอร์กลางผ่าน REST APIจากตัวอย่างก่อนหน้านี้ที่ใช้ WMI โครงสร้างจะออกมาประมาณนี้:

Get-WmiObject Win32_DiskDrive | Where-Object { $_.InterfaceType -eq “USB” } | ForEach-Object {
[PSCustomObject]@{
DeviceID = $_.DeviceID
โมเดล = $_.โมเดล
หมายเลขซีเรียล = (Get-WmiObject Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).SerialNumber
}
} | ConvertTo-Json | Invoke-RestMethod -Uri «http://servidorcentral/api/usblog» -Method Post

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

สำหรับการตรวจสอบอย่างต่อเนื่อง สคริปต์มักจะถูกรวมเข้ากับ ตัวกำหนดเวลาการทำงานของ Windows สามารถตั้งค่าให้ทำงานเมื่อระบบเริ่มต้นหรือเมื่อเข้าสู่ระบบ หรือคุณสามารถสร้างบริการที่ตรวจสอบเหตุการณ์ของระบบที่เกี่ยวข้องกับการเชื่อมต่อ USB และเรียกใช้การส่งข้อมูลแบบเรียลไทม์ได้

สร้าง REST API อย่างง่ายเพื่อบันทึกข้อมูลจาก USB

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

แนวคิดพื้นฐานมีดังนี้:

จากขวดนำเข้าขวด, คำขอ, jsonify
แอพ = ขวด (__name__)
@app.route('/api/usblog', methods=['POST'])
def log_usb_data():
ข้อมูล = request.get_json()
หากไม่มีข้อมูล:
คืนค่า jsonify({"ข้อผิดพลาด": "ไม่มีการส่งข้อมูล"}), 400
with open("usb_log.txt", "a") as log_file:
log_file.write(f»{data}\n»)
คืนค่า jsonify({"message": "ได้รับข้อมูลสำเร็จแล้ว"}), 200
ถ้า __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)

ด้วยวิธีนี้ การเรียกใช้งานทุกครั้งจากสคริปต์ PowerShell ของคุณจะสิ้นสุดลง เพิ่มบรรทัดที่มีข้อมูลอุปกรณ์ USB ลงในไฟล์ usb_log.txtแน่นอนว่าในการใช้งานจริง คุณจะต้องส่งข้อมูลเหล่านั้นไปยังฐานข้อมูล เพิ่มการตรวจสอบสิทธิ์ เข้ารหัสการรับส่งข้อมูลด้วย HTTPS เป็นต้น แต่ในฐานะจุดเริ่มต้นแล้ว แค่นี้ก็เพียงพอแล้ว

คุณสมบัติผู้สมัคร: ขั้นตอนพื้นฐานในการเริ่มต้นใช้งานมีดังนี้:

  • ติดตั้ง Flask ด้วย pip ติดตั้งกระติกน้ำ บนเซิร์ฟเวอร์ Python ของคุณ
  • บันทึกโค้ดลงใน เซิร์ฟเวอร์.py และเปิดใช้งานด้วย python server.py.
  • กำหนดค่า URL ในสคริปต์ PowerShell ให้ชี้ไปยัง http://IP_DEL_SERVIDOR:5000/api/usblog.

นับจากนั้นเป็นต้นไป อุปกรณ์ใดๆ ที่ได้รับอนุญาตให้ติดต่อกับเซิร์ฟเวอร์นั้นก็จะสามารถทำได้ ส่งรายการอุปกรณ์ USB ของคุณ เป็นระยะๆ หรือตามความต้องการ

ตั้งเวลาให้สคริปต์ USB ทำงานเมื่อ Windows เริ่มทำงาน

เพื่อให้ระบบทั้งหมดนี้ใช้งานได้อย่างมีประสิทธิภาพ สิ่งสำคัญคือต้อง สคริปต์ PowerShell จะทำงานโดยอัตโนมัติโดยที่ไม่มีใครต้องจำว่าต้องเรียกใช้งานมันอย่างไรระบบปฏิบัติการ Windows มีสองวิธีที่ใช้กันทั่วไป ได้แก่ ตัวกำหนดเวลาทำงาน (Task Scheduler) และโฟลเดอร์เริ่มต้น (Startup folder)

การใช้ตัวกำหนดเวลาการทำงาน

การกำหนดค่าอย่างรวดเร็ว: ด้วยตัวกำหนดเวลาทำงาน (Task Schedulerคุณสามารถกำหนดค่าการทำงานเพื่อตอบสนองต่อเหตุการณ์ต่างๆ ของระบบได้:

  • เปิดโปรแกรมกำหนดเวลาทำงาน (Task Scheduler) และเลือก “สร้างงาน”.
  • ในแท็บ “ทั่วไป” ให้ตั้งชื่อเช่น “การติดตาม USB” และเลือก “เรียกใช้ด้วยสิทธิ์สูงสุด”
  • ใน “Triggers” เขาได้เพิ่มอีกหนึ่งอย่างสำหรับ “เมื่อระบบเริ่มทำงาน” หรือ “เมื่อฉันล็อกอิน”ขึ้นอยู่กับสิ่งที่คุณสนใจ
  • ใน “การดำเนินการ” ให้เลือก “เริ่มโปรแกรม” แล้วชี้ไปที่ powershell.exe ประเภทพารามิเตอร์ -NoProfile -ExecutionPolicy Bypass -File «C:\path\script.ps1».
  • บันทึกและตรวจสอบว่าได้เปิดใช้งานงานแล้ว

สิ่งนี้ทำให้มั่นใจได้ว่า การตรวจสอบจะเริ่มต้นทุกครั้งที่อุปกรณ์เริ่มทำงาน และสคริปต์สามารถเข้าถึงข้อมูลที่จำเป็นทั้งหมดได้ หากมีสิทธิ์ที่เหมาะสม

การใช้งานโฟลเดอร์ Home ร่วมกับไฟล์ .bat

อีกทางเลือกที่ง่ายกว่า แต่มีรายละเอียดน้อยกว่า คือการสร้าง . ค้างคาว ซึ่งจะเรียกใช้ PowerShell และบันทึกไฟล์ลงในโฟลเดอร์ Home ของผู้ใช้:

powershell.exe -NoProfile -ExecutionPolicy Bypass -File «C:\path\del\script.ps1»

คุณบันทึกสิ่งนั้นไว้เป็นชื่ออื่น เช่น tracking_usb.batและคัดลอกไปยัง:

%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup

ทันทีที่ผู้ใช้ล็อกอินเข้าสู่ระบบ Windows จะเรียกใช้ไฟล์ .bat นั้น และเรียกใช้สคริปต์ PowerShell ไปด้วยนี่เป็นวิธีแก้ปัญหาที่มีประโยชน์สำหรับสภาพแวดล้อมขนาดเล็ก หรือเมื่อคุณไม่ต้องการใช้งาน Task Scheduler

ติดตามอุปกรณ์ USB บนคอมพิวเตอร์ระยะไกลโดยใช้ PowerShell

ในเครือข่ายองค์กรหลายแห่ง ปัญหาไม่ได้อยู่ที่การรู้ว่าไดรฟ์ USB ตัวไหนเชื่อมต่อกับคอมพิวเตอร์ของคุณเท่านั้น แต่ยังรวมถึง... เพื่อให้สามารถมองเห็นภาพรวมของอุปกรณ์ที่เชื่อมต่อกันบนคอมพิวเตอร์หลายเครื่องได้ในกรณีที่ไม่สามารถใช้เอเจนต์จากภายนอกได้ การผสมผสานระหว่าง PowerShell Remoting และ WMI ยังคงเป็นแนวทางที่มีประสิทธิภาพมาก

ตัวอย่างสคริปต์ทั่วไปสำหรับการแสดงรายการอุปกรณ์ USB บนคอมพิวเตอร์หลายเครื่องจะมีลักษณะดังนี้:

$computer = «COMPUTER1″,»COMPUTER2″,»COMPUTER3»
$namespace = "root\CIMV2"
Get-WmiObject -Class Win32_USBControllerDevice -ComputerName $computer -Namespace $namespace |
ForEach-Object { [wmi]($_.Dependent) } |
เรียงลำดับตามผู้ผลิต, คำอธิบาย, รหัสอุปกรณ์ |
Format-Table -GroupBy Manufacturer Description,Service,DeviceID |
Out-File -Append -FilePath C:\USB\usblist.txt

  วิธีการลบและเพิ่มเครื่องพิมพ์ใน Windows 11

แนวคิดคือ: สอบถามความสัมพันธ์ระหว่างตัวควบคุม USB กับอุปกรณ์บนคอมพิวเตอร์ระยะไกลแต่ละเครื่อง แปลงคุณสมบัติ Dependent ให้เป็นอินสแตนซ์ WMI จริง จากนั้นบันทึกข้อมูลที่เรียงลำดับแล้วลงในไฟล์ข้อความหากไฟล์ยังคงว่างเปล่า คุณต้องตรวจสอบสิทธิ์การเข้าถึง การเข้าถึงระยะไกล ไฟร์วอลล์ และแน่นอน ไวยากรณ์ของสคริปต์ (ช่องว่างหรือเครื่องหมายอัญประกาศที่ปิดไม่ถูกต้องเป็นสาเหตุคลาสสิก)

ด้วยโครงสร้างที่ดีของสคริปต์ประเภทนี้ คุณจะสามารถบรรลุเป้าหมายได้ รายการอุปกรณ์ USB ที่รวบรวมไว้สำหรับแต่ละทีมจัดกลุ่มตามผู้ผลิตและรายละเอียด โดยไม่พึ่งพาซอฟต์แวร์ของบุคคลที่สาม

ใช้ USB ID ในการค้นหาและบำรุงรักษาไดรเวอร์

นอกเหนือจากด้านความปลอดภัยแล้ว การรู้จักและจัดการสิ่งต่างๆ เหล่านี้ก็สำคัญเช่นกัน รหัสฮาร์ดแวร์เป็นกุญแจสำคัญในการค้นหาไดรเวอร์ที่เหมาะสมโดยเฉพาะอย่างยิ่งเมื่อ Windows หาเวอร์ชันทั่วไปไม่เจอ หรือหลังจากอัปเดตระบบแล้วทำให้เครื่อง "ใช้งานไม่ได้"

รูปแบบลำดับชั้น: รหัสประจำตัวประเภทนี้มักเป็นไปตามรูปแบบลำดับชั้น โดยเฉพาะในอุปกรณ์ PCI/PCIe:

  • VEN_XXXX ระบุผู้ผลิตชิป
  • ดีวี_XXXX โปรดระบุรุ่นของอุปกรณ์อย่างเฉพาะเจาะจง
  • SUBSYS_XXXXXXXXX รายละเอียดเกี่ยวกับตัวแปรของแอสเซมเบลอร์ ภูมิภาค ฯลฯ

สำหรับ USB เราจะพบสายเชื่อมต่อแบบนี้ USB\VID_XXXX&PID_YYYY และบางครั้งก็มีหมายเลขประจำเครื่องด้วย เมื่ออุปกรณ์หยุดทำงานหลังจากอัปเดต Windows คัดลอกหมายเลข HWID ที่ถูกต้อง แล้วป้อนลงในเครื่องมือค้นหาของผู้ผลิต หรือใน... ฐานข้อมูล เชี่ยวชาญ นี่เป็นวิธีที่แม่นยำมากในการค้นหาไดรเวอร์ที่เหมาะสม แม้แต่กับฮาร์ดแวร์รุ่นเก่าก็ตาม

เครื่องมือเช่น ตัวติดตั้งไดรเวอร์ Snappy Origin โซลูชันการจัดการตัวควบคุมเชิงพาณิชย์มักอาศัยตัวระบุเหล่านี้เป็นหลัก จับคู่ไดรเวอร์อุปกรณ์อย่างแม่นยำนอกจากนี้ยังมีโปรแกรมค้นหาในเครื่องที่สามารถค้นหาไฟล์ .inf นับร้อยไฟล์โดยใช้ HWID ที่ฝังอยู่ภายใน ซึ่งเป็นประโยชน์อย่างมากเมื่อคุณมีคลังไดรเวอร์ที่ดาวน์โหลดมา แต่จำไม่ได้ว่าตัวไหนใช้กับอะไร

เคล็ดลับที่มีประโยชน์สำหรับคนที่จัดระเบียบเก่งที่สุดคือ... จัดทำสเปรดชีตที่มีคอลัมน์สำหรับ VEN, DEV, SUBSYS, คำอธิบาย และเส้นทางไดรเวอร์ด้วยฟังก์ชันต่างๆ เช่น MID() ใน Excel คุณสามารถดึงข้อมูลเหล่านั้นจากสตริง HWID ได้โดยอัตโนมัติ และในระยะยาวจะช่วยประหยัดเวลาในการลองผิดลองถูกได้หลายชั่วโมงเมื่อต้องจัดการกับฮาร์ดแวร์ที่มีเอกสารอธิบายไม่ครบถ้วน

เครื่องมือเสริมสำหรับการทำงานกับ USB ID

แม้ว่าจุดสนใจหลักจะอยู่ที่สิ่งที่คุณสามารถทำได้ด้วย PowerShell และยูทิลิตี้ในตัวของ Windowsการรู้จักเครื่องมือเสริมบางอย่างจะเป็นประโยชน์ โดยเฉพาะอย่างยิ่งหากสภาพแวดล้อมของคุณอนุญาตให้ติดตั้งได้ ซึ่งจะช่วยอำนวยความสะดวกในการทำงานกับอุปกรณ์ USB

โปรแกรมดูข้อมูลอุปกรณ์ USB (USBView) จาก Microsoft

ไมโครซอฟต์ให้บริการยูทิลิตี้นี้ฟรี โปรแกรมดูข้อมูลอุปกรณ์ USB (USBView)ซึ่งรวมอยู่ใน Windows Driver Kit โปรแกรมนี้แสดงภาพรวมของไดรเวอร์และอุปกรณ์ USB ทั้งหมดที่มีอยู่ในระบบในรูปแบบแผนผัง และแสดงผล idVendor, idProduct และฟิลด์คำอธิบายอุปกรณ์อื่นๆ อย่างชัดเจนมาก

ขั้นตอน ขั้นตอนพื้นฐานคือ:

  • ติดตั้งแพ็คเกจ Windows Driver Kit ที่เกี่ยวข้องและค้นหาตำแหน่งที่ถูกต้อง USBView.exe (โดยปกติจะอยู่ในเส้นทางของดีบักเกอร์ เช่น Debuggers\x64)
  • เรียกใช้โปรแกรม แล้วเลือกอุปกรณ์ USB ในเมนูทางด้านซ้าย
  • ตรวจสอบช่องต่างๆ ในแผงด้านขวา idVendor และ idProductพร้อมกับคำอธิบายส่วนที่เหลือ

หากคุณกำลังพัฒนาไดรเวอร์ ตัวอย่างเช่น ด้วย ตัวช่วยพัฒนาผู้ขับขี่ VISAข้อมูลนี้มีความสำคัญอย่างยิ่งในการบอกไดรเวอร์ว่าควรจัดการกับอุปกรณ์ใดบ้างโดยพิจารณาจาก VID และ PID ของอุปกรณ์เหล่านั้น

ฐานข้อมูลรหัส USB ออนไลน์

เมื่อคุณไม่มีอุปกรณ์นั้นอยู่กับตัว แต่คุณทราบชื่อหรือส่วนหนึ่งของรหัสประจำตัว คุณก็สามารถใช้วิธีนี้ได้เช่นกัน ฐานข้อมูลรหัส USB สาธารณะในเว็บไซต์ประเภทนี้ คุณสามารถค้นหาตามรุ่น ยี่ห้อ หรือแม้แต่ส่วนประกอบ VID/PID ได้ และเว็บไซต์จะแสดงค่าอย่างเป็นทางการของสินค้าหรือบริการนั้นๆ รหัสผู้ขายและรหัสผลิตภัณฑ์ ลงทะเบียนสำหรับอุปกรณ์นั้นแล้ว

สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อ คุณได้รับ HWID ที่ไม่สมบูรณ์ หรือ Windows แสดงคำอธิบายแบบทั่วไปเท่านั้นและคุณต้องตรวจสอบว่าตรงกับ VID/PID ใดก่อนที่จะค้นหาไดรเวอร์ที่เข้ากันได้ หรือใช้มาตรการบล็อกอุปกรณ์ตาม ID

ท้ายที่สุดแล้ว การมีความเชี่ยวชาญในเรื่องรหัส USB และตัวระบุฮาร์ดแวร์อื่นๆ จะทำให้คุณกลายเป็นเหมือน "นักสืบระบบ" คุณสามารถตรวจสอบได้ว่าอุปกรณ์ใดทำให้เกิดข้อผิดพลาด ไดรฟ์ USB ใดเชื่อมต่อกับคอมพิวเตอร์เครื่องใดและเมื่อใด หรือเหตุใดไดรเวอร์จึงหยุดทำงานหลังจากอัปเดตด้วย PowerShell เป็นเครื่องมือหลัก ผสานกับ Device Manager, WMI, ยูทิลิตี้เฉพาะทางบางอย่าง และหากจำเป็น เซิร์ฟเวอร์ Flask ขนาดเล็ก คุณจะมีทุกสิ่งที่คุณต้องการเพื่อตรวจสอบและควบคุมระบบนิเวศ USB ในสภาพแวดล้อมของคุณโดยไม่ต้องพึ่งพาโซลูชันของบุคคลที่สามที่ยุ่งยากหรือข้อสันนิษฐานที่ไม่น่าเชื่อถือ