So finden Sie die USB-Hardware-ID mithilfe von PowerShell und anderen Tools

Letzte Aktualisierung: 17/12/2025
Autor: Holger
  • El Hardware Die ID identifiziert jedes Gerät eindeutig und Windows Er benutzt es, um TreiberLizenzen und Sicherheit.
  • Powershell ermöglicht es Ihnen, die Produkte einfach aufzulisten und zu filtern. USB Identifizierung mit Cmdlets wie Get-PnpDevice und WMI-Klassen.
  • Die Verfolgung von USB-Geräten kann mithilfe von Skripten automatisiert werden, die Daten über eine REST-API an einen zentralen Server senden.
  • Werkzeuge wie Geräte-Manager und USBView erleichtern das Auslesen von VID/PID und anderen wichtigen Feldern des USB-Deskriptors.

Ermitteln Sie die USB-Hardware-ID mithilfe von PowerShell.

Wenn Sie jemals einen USB-Stick angeschlossen haben und Ihr Computer sich daraufhin ungewöhnlich verhielt oder Windows eine mysteriöse Fehlermeldung anzeigte, liegt das Problem wahrscheinlich an der Hardware-ID des USB-Geräts . Zu wissen, wie man diese ID mithilfe von PowerShell und anderen Windows-Tools ermittelt, kann Ihnen viel Ärger ersparen, insbesondere in Unternehmensumgebungen, in denen die Installation von Drittanbietersoftware eingeschränkt ist.

Darüber hinaus sind viele Unternehmen verpflichtet, angeschlossene USB-Geräte zu überwachen, deren IDs zu registrieren und die Rückverfolgbarkeit aus Sicherheits- und Compliance-Gründen zu gewährleisten. Von der Verhinderung von Datenlecks bis hin zum Schutz vor Malware , die über infizierte USB-Laufwerke eingeschleust wird – die korrekte Identifizierung jedes einzelnen Geräts ist entscheidend. Hier erfahren Sie detailliert, wie die HWID funktioniert, wie Sie die USB-ID mithilfe von PowerShell und anderen Tools ermitteln und wie Sie diese Informationen sowohl zur Fehlerdiagnose als auch zur automatisierten Geräteverfolgung nutzen können.

Was ist eine Hardware-ID (HWID) und warum ist sie wichtig?

Die Hardware-ID (HWID) ist eine eindeutige digitale Kennung, die jeder physischen Komponente Ihres Computers zugeordnet ist: Motherboard, Festplatte, Grafikkarte, Netzwerkadapter, USB-Controller usw. Sie wird oft als „Fingerabdruck“ des Geräts bezeichnet, da sie dazu dient, es von anderen zu unterscheiden, selbst wenn zwei Computer identisch erscheinen.

Auf einem typischen PC kombiniert das Betriebssystem die Hardware-Identifikationsnummern (HWIDs) mehrerer wichtiger Komponenten zu einer globalen Maschinenidentität . Diese Identität ist entscheidend für Dinge wie Softwarelizenzen, die an einen bestimmten Rechner gebunden sind , die Nachverfolgung von IT-Assets und viele Sicherheitsprozesse, die sicherstellen müssen, dass ein Programm nur auf autorisierter Hardware ausgeführt wird.

Diese Kennung wird nicht einfach von Windows erstellt: Jedes Hardwareteil besitzt eine eigene, in der Firmware gespeicherte ID (z. B. im EEPROM des Geräts). Das Betriebssystem liest diese Informationen und generiert daraus Kennungszeichenfolgen, die dann im Geräte-Manager, in PowerShell oder in Befehlen wie wmic angezeigt werden.

Bei der Erstinstallation des Betriebssystems erstellt Windows eine Momentaufnahme der Hardwarekonfiguration und generiert eine Reihe von Kennungen, die mit dem jeweiligen Computer verknüpft sind. Wenn Sie später eine wichtige Komponente ändern, beispielsweise das Motherboard, kann sich die Menge der Hardware-IDs so stark verändern, dass eine erneute Lizenzprüfung oder bei manchen Produkten sogar eine Systemreaktivierung erforderlich wird.

Wie man eine USB-Gerätekennung erstellt

Bei USB-Geräten wird die HWID von einem spezifischen Deskriptor abgeleitet: dem USB-Gerätedeskriptor (USB_DEVICE_DESCRIPTOR) . Es handelt sich um eine Datenstruktur, die jedes USB-Gerät bereitstellen muss und die seine grundlegenden Eigenschaften beschreibt: Klasse, unterstützte USB-Version, Hersteller, Produkt usw.

Dieser Deskriptor enthält zwei Schlüsselfelder: idVendor und idProduct . Das erste Feld identifiziert den Hersteller (Hersteller-ID oder VID), das zweite das spezifische Produktmodell (Produkt-ID oder PID). Mithilfe dieser Werte erstellt Windows Zeichenfolgen wie USB\VID_XXXX&PID_YYYY…, die im Geräte-Manager als „Hardware-IDs“ angezeigt werden.

Eine Microsoft-USB-Webcam könnte beispielsweise die IDs idVendor = 0x045E (Microsoft) und idProduct = 0x0728 aufweisen . Diese beiden Werte werden zusammen mit der Geräteversionsnummer ( bcdDevice ) und weiteren Feldern kombiniert, um die Hardware-IDs und kompatiblen IDs zu bilden , die Windows verwendet, um den passenden Treiber zu finden.

Das Feld „bcdUSB“ im Deskriptor gibt die Version der USB-Spezifikation an, der das Gerät entspricht (z. B. 0x0200 für USB 2.0). Dies hilft dem USB-Treiberstapel, mit dem Gerät zu kommunizieren, die unterstützten Geschwindigkeiten zu ermitteln und die verfügbaren Konfigurationsoptionen zu erkennen.

Wichtig ist, dass ein USB-Gerät seine Beschreibungsinformationen im angeschlossenen Zustand nicht ändert , selbst wenn sich sein Energiestatus ändert. Es kann unterschiedliche Informationen anzeigen, je nachdem, ob es mit hoher oder voller Geschwindigkeit verbunden ist; dies wird jedoch zum Zeitpunkt des Anschlusses festgelegt.

Treiberseitig erhält der Host diesen Deskriptor über eine GET_DESCRIPTOR-Kontrollübertragung an das Gerät . Unter Windows können Kernelmodustreiber (KMDF/UMDF/WDM) diesen Deskriptor formal über URBs (USB-Anforderungsblöcke) oder die API des Frameworks anfordern; dies fällt jedoch in den Bereich der Treiberentwicklung und nicht in die PowerShell-Administration.

Die USB-Hardware-ID kann mithilfe der grafischen Windows-Tools angezeigt werden.

USB-Hardware-ID in Windows anzeigen

Bevor wir uns mit PowerShell beschäftigen, sollten wir uns daran erinnern, dass Windows mehrere einfache grafische Möglichkeiten bietet, die HWIDs beliebiger Geräte anzuzeigen . Diese sind besonders nützlich, wenn Sie nur ein bestimmtes Gerät identifizieren müssen.

  NVIDIA veröffentlicht neuen Hotfix, aber schwarze Bildschirme bleiben bestehen

1. Geräte-Manager

Am schnellsten geht es, ohne eine einzige Zeile Code zu schreiben, mit dem Windows Geräte-Manager . Er funktioniert für alle Hardwaretypen, einschließlich USB -Speichergeräte , Drucker, Webcams usw.

  • Öffnen Sie den Geräte-Manager durch Drücken von Win + X und Auswahl von „Geräte-Manager“ oder durch Suchen nach „devmgmt.msc“.
  • Suchen Sie die Komponente, zum Beispiel in „Universal Serial Bus Controller“ oder „Disk Drives“ wenn es sich um einen USB-Stick handelt.
  • Klicken Sie mit der rechten Maustaste auf das problematische Gerät und geben Sie Folgendes ein: Ortschaften.
  • Gehen Sie zur Registerkarte Details.
  • Im Dropdown-Menü „Eigenschaft“ auswählen Hardware-IDs.

Sie sehen eine Liste von Zeichenketten; die spezifischste enthält üblicherweise VID, PID und manchmal die Seriennummer oder SUBSYS. Diese Zeichenketten können Sie dann in Skripten oder Treibersuchen verwenden , indem Sie sie exakt so kopieren, wie sie sind.

2. Eingabeaufforderung mit WMIC

Wenn Sie eine Konsolenoption bevorzugen, aber PowerShell noch nicht verwenden möchten, können Sie wmic nutzen (es ist in modernen Versionen veraltet, aber Sie finden es immer noch auf vielen Computern):

wmic path win32_pnpentity get name, deviceid

Dieser Befehl zeigt alle Plug-and-Play-Geräte und ihre Geräte-IDs an , also genau die Hardware-IDs, die uns interessieren. Anschließend können Sie die Ausgabe visuell filtern oder zur weiteren Verarbeitung in einer Datei speichern.

3. Anwendungen von Drittanbietern (sofern zulässig)

In Umgebungen, in denen dies zulässig ist, werden häufig Tools wie CPU-Z, Speccy oder HWiNFO verwendet , um einen vollständigen Systemüberblick einschließlich der HWID vieler Komponenten zu erhalten. In vielen Unternehmen ist diese Option jedoch untersagt, weshalb PowerShell zum universellen Werkzeug wird, das den Sicherheitsrichtlinien entspricht.

Ermitteln Sie die USB-Hardware-ID mit PowerShell.

PowerShell enthält leistungsstarke Cmdlets zum Anzeigen und Filtern von Informationen über Plug-and-Play-Geräte. Für die Hardware-ID-Ermittlung ist Get-PnpDevice am nützlichsten , obwohl ältere WMI-Klassen in einigen älteren Skripten noch verwendet werden.

Hardware-IDs mit Get-PnpDevice auflisten

Um die Kennungen aller aktiven Geräte im System anzuzeigen, können Sie Folgendes verwenden:

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

Dieser Befehl gibt eine Tabelle mit dem Anzeigenamen des Geräts und seiner InstanceId zurück . Diese InstanceId ist genau die Hardware-ID-Zeichenfolge (oder sehr ähnlich), die Sie dann mit Fehlern, Systemereignissen oder Treibersuchen in Verbindung bringen können.

Wenn Sie sich beispielsweise nur auf PCI-Geräte konzentrieren möchten , könnten Sie folgendermaßen filtern:

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

Und für USB-Geräte können Sie einen ähnlichen Filter auf die InstanceId-Zeichenfolge anwenden und dabei das Präfix ändern:

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

Anwendungsfälle aus der Praxis: Identifizierung eines problematischen USB-Laufwerks anhand seiner ID

Ein sehr häufiges Szenario ist folgendes: Ihr PC friert ein, Sie sehen in der Ereignisanzeige nach und finden einen Eintrag für ein Gerät wie „USB\VID_1F75&PID_0917\8&31abfd78&0&3“ . Sie suchen im Geräte-Manager nach dieser ID, können aber nicht herausfinden, was genau dahintersteckt.

Praxisbeispiel: In solchen Situationen ist es sehr hilfreich, PowerShell zum Abgleich der Informationen zu verwenden. Beispielsweise können Sie versuchen, alle PnP-Geräte zu finden, deren InstanceId mit diesem Muster beginnt:

Get-PnpDevice -InstanceId 'USB\VID_1F75*'

Wenn dies zu keinem Ergebnis führt (was manchmal vorkommt, wenn das Gerät nicht mehr angeschlossen ist), können Sie den USB-Geräteverlauf mit WMI oder, sofern zulässig, mit Tools wie USBDeview überprüfen , die alle jemals angeschlossenen Geräte einschließlich Datum und Port anzeigen.

Eigenschaften anzeigen: Wenn Ergebnisse angezeigt werden, können Sie diese mit Folgendem erweitern:

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

Hier sollten alle Plug-and-Play-Eigenschaften des Geräts aufgelistet werden . Falls das Gerät nicht vorhanden ist oder ein Berechtigungsproblem besteht, erhalten Sie möglicherweise leere oder unvollständige Ergebnisse. Um die Informationen in eine CSV-Datei zu exportieren, gehen Sie wie folgt vor:

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

Wenn die CSV-Datei leer erscheint, bedeutet dies fast immer, dass zu diesem Zeitpunkt kein Gerät dem Filter entspricht oder dass das Cmdlet die Eigenschaften nicht lesen konnte (aufgrund fehlender Berechtigungen oder weil das Gerät nicht antwortet).

Mit WMI verbundene USB-Speichergeräte anzeigen

Ein weiterer typischer Anwendungsfall ist die Abfrage, welche USB-Laufwerke oder -Datenträger aktuell angeschlossen sind . Eine klassische PowerShell-Lösung hierfür ist die Verwendung der WMI-Klasse Win32_DiskDrive , gefiltert nach Schnittstellentyp:

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

Wenn Sie ein besser lesbares und exportierbares Ergebnis wünschen, können Sie mithilfe eines PSCustomObject nur die relevanten Felder projizieren:

Get-WmiObject Win32_DiskDrive | Where-Object { $_.InterfaceType -eq 'USB' } | ForEach-Object {
[PSCustomObject]@{
Geräte-ID = $_.Geräte-ID
Model = $_.Model
Serial = (Get-WmiObject Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).SerialNumber
}
}

Hier werden für jedes benutzerdefinierte Objekt die Geräte-ID, das Modell und die physische Seriennummer angezeigt (sofern diese vom Hersteller ordnungsgemäß bereitgestellt werden). Dies ist eine sehr nützliche Grundlage für Inventarisierungs- und Tracking-Skripte.

Automatische Überwachung und Protokollierung von USB-Geräten mit PowerShell

In Unternehmensumgebungen ist es sehr üblich, dass die IT-Abteilung ein zentrales Protokoll aller an die einzelnen Rechner angeschlossenen USB-Geräte wünscht: welches Gerät es war, wann es angeschlossen wurde, von welchem ​​Computer usw. Dies hilft, nicht autorisierte Geräte zu erkennen, Sicherheitsvorfälle zu untersuchen und die Einhaltung interner Richtlinien sicherzustellen.

  Vollständiger Leitfaden zur Verwendung von MDT: Bereitstellung, Automatisierung und erweiterte Verwaltung von Windows-Systemen

Eine flexible Möglichkeit, dies ohne zusätzliche Lizenzen zu realisieren, besteht darin, ein PowerShell -Skript zu erstellen , das die relevanten Informationen von jedem USB-Gerät erfasst und über eine REST-API an einen zentralen Server sendet . Aufbauend auf dem vorherigen Beispiel mit WMI sähe das Schema etwa so aus:

Get-WmiObject Win32_DiskDrive | Where-Object { $_.InterfaceType -eq “USB” } | ForEach-Object {
[PSCustomObject]@{
Geräte-ID = $_.Geräte-ID
Model = $_.Model
Serial = (Get-WmiObject Win32_PhysicalMedia | Where-Object { $_.Tag -eq $_.DeviceID }).SerialNumber
}
} | ConvertTo-Json | Invoke-RestMethod -Uri «http://servidorcentral/api/usblog» -Method Post

Dieser Block erfasst alle Datenträger mit USB-Schnittstelle, erstellt Objekte mit den Schlüsseldaten und serialisiert sie in JSON . Anschließend sendet er dieses JSON mithilfe von Invoke-RestMethod an einen HTTP-Endpunkt Ihres Protokollierungsservers. Ab hier sind Ihrer Fantasie (und Ihren Sicherheitsanforderungen) keine Grenzen gesetzt: Sie können beispielsweise den Computernamen, den Benutzer der Sitzung, Datum und Uhrzeit usw. hinzufügen.

Zur kontinuierlichen Überwachung wird das Skript üblicherweise mit der Windows-Aufgabenplanung kombiniert , sodass es beim Systemstart oder bei der Anmeldung ausgeführt wird. Alternativ kann ein Dienst erstellt werden, der Systemereignisse im Zusammenhang mit USB-Verbindungen überwacht und eine Echtzeitübertragung auslöst.

Erstellen Sie eine einfache REST-API zum Protokollieren von USB-Daten.

Um die vom PowerShell-Skript gesendeten Daten zu empfangen, benötigen Sie einen kleinen Webserver mit einer Route, die für die Annahme von POST-Anfragen mit JSON konfiguriert ist . Eine sehr schnelle Möglichkeit hierfür bietet Python mit Flask , wodurch Sie einen Endpunkt mit nur wenigen Codezeilen einrichten können.

Die Grundidee ist folgende:

aus Flask importieren Flask, Anfrage, jsonify
app = Flasche(__name__)
@app.route('/api/usblog', methods=['POST'])
def log_usb_data():
data = request.get_json()
wenn keine Daten:
return jsonify({"error": "Keine Daten gesendet"}), 400
with open("usb_log.txt", "a") as log_file:
log_file.write(f»{data}\n»)
return jsonify({"message": "Daten erfolgreich empfangen"}), 200
if __name__ == '__main__':
app.run(Host='0.0.0.0′, Port=5000)

Dadurch wird bei jedem Aufruf Ihrer PowerShell-Skripte eine Zeile mit den USB-Gerätedaten in die Datei usb_log.txt eingefügt . In einer realen Umgebung sollten Sie diese Daten natürlich an eine Datenbank senden, eine Authentifizierung implementieren, den Datenverkehr mit HTTPS verschlüsseln usw. Für den Anfang ist dies jedoch mehr als ausreichend.

Voraussetzungen: Die grundlegenden Schritte zur Inbetriebnahme wären:

  • Installieren Sie Flask mit Pip Installieren Sie den Kolben auf Ihrem Python-Server.
  • Speichern Sie den Code in einer server.py und starten Sie es mit python server.py.
  • Konfigurieren Sie die URL in PowerShell-Skripten so, dass sie auf Folgendes verweist http://IP_DEL_SERVIDOR:5000/api/usblog.

Von dort aus kann jedes Team, das die Berechtigung hat, diesen Server zu kontaktieren, seine Bestandsliste der USB-Geräte regelmäßig oder auf Anfrage senden .

USB-Skripte so planen, dass sie beim Windows-Start ausgeführt werden

Damit dieses System praktikabel ist, ist es wichtig, dass das PowerShell-Skript automatisch startet, ohne dass jemand daran denken muss, es auszuführen . Windows bietet zwei gängige Methoden: die Aufgabenplanung und den Autostart-Ordner.

Verwenden des Taskplaners

Schnell eingerichtet: Mit dem Aufgabenplaner können Sie die Ausführung als Reaktion auf verschiedene Systemereignisse konfigurieren:

  • Öffnen Sie die Aufgabenplanung und wählen Sie „Aufgabe erstellen“.
  • Geben Sie auf der Registerkarte „Allgemein“ einen Namen ein, zum Beispiel „USB-Tracking“ und wählen Sie „Mit höchsten Berechtigungen ausführen“.
  • In „Triggers“ fügt er einen hinzu für „Beim Systemstart“ oder „Beim Einloggen“je nachdem, was Sie interessiert.
  • Wählen Sie unter „Aktionen“ die Option „Programm starten“ und zeigen Sie auf powershell.exe mit Parametern Typ -NoProfile -ExecutionPolicy Bypass -File «C:\path\script.ps1».
  • Speichern Sie die Einstellungen und überprüfen Sie, ob die Aufgabe aktiviert ist.

Dadurch wird sichergestellt, dass die Überwachung jedes Mal startet, wenn der Computer hochgefahren wird, und dass das Skript auf alle notwendigen Informationen zugreifen kann, sofern es über die entsprechenden Berechtigungen verfügt.

Verwendung des Home-Ordners mit einer .bat-Datei

Eine weitere, einfachere, wenn auch weniger detaillierte Option ist die Erstellung einer .bat-Datei , die PowerShell aufruft, und deren Ablage im Home-Ordner des Benutzers:

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

Sie speichern diese Datei beispielsweise unter dem Namen rastro_usb.bat und kopieren sie nach:

%APPDATA%\Microsoft\Windows\Startmenü\Programme\Autostart

Sobald sich der Benutzer anmeldet, führt Windows die .bat-Datei und damit das PowerShell-Skript aus . Dies ist eine nützliche Lösung für kleine Umgebungen oder wenn Sie den Taskplaner nicht verwenden möchten.

Überwachen Sie USB-Geräte auf Remotecomputern mithilfe von PowerShell

In vielen Unternehmensnetzwerken besteht das Problem nicht nur darin, zu wissen, welches USB-Gerät an den eigenen Computer angeschlossen ist, sondern darin, einen umfassenden Überblick über alle angeschlossenen Geräte an mehreren Computern zu haben . Wenn Drittanbieter-Agenten nicht verwendet werden können, bleibt die Kombination von PowerShell Remoting und WMI eine sehr praktikable Lösung.

Ein typisches Beispiel für ein Skript zum Auflisten von USB-Geräten auf mehreren Computern sähe etwa so aus:

$computer = «COMPUTER1″,»COMPUTER2″,»COMPUTER3»
$namespace = "root\CIMV2"
Get-WmiObject -Class Win32_USBControllerDevice -ComputerName $computer -Namespace $namespace |
ForEach-Object { [wmi]($_.Dependent) } |
Sort-Object Hersteller, Beschreibung, Geräte-ID |
Format-Table -GroupBy Manufacturer Description,Service,DeviceID |
Out-File -Append -FilePath C:\USB\usblist.txt

  Toolkit zur Anwendungskompatibilität für die Kompatibilität von Unternehmenssoftware

Die Idee ist, die USB-Controller-Geräte-Beziehung auf jedem Remotecomputer abzufragen, die Eigenschaft „Abhängig“ einer realen WMI-Instanz zuzuordnen und die sortierten Informationen anschließend in eine Textdatei zu schreiben . Ist die Datei leer, müssen Sie die Berechtigungen, die Remote-Zugriffsmöglichkeit, die Firewall und natürlich die Skriptsyntax überprüfen (falsch ausgerichtete Leerzeichen oder nicht korrekt geschlossene Anführungszeichen sind häufige Fehlerquellen).

Mit einer guten Struktur eines solchen Skripts lässt sich ein konsolidiertes Inventar der USB-Geräte pro Computer erstellen , gruppiert nach Hersteller und Beschreibung, ohne auf externe Software angewiesen zu sein.

Verwendung der USB-ID zum Auffinden und Verwalten von Treibern

Abgesehen vom Sicherheitsaspekt ist die Kenntnis und Handhabung von Hardware-IDs der Schlüssel zur Suche nach geeigneten Treibern , insbesondere wenn Windows den generischen Treiber nicht findet oder nach einem Systemupdate, das ein Gerät „tot“ macht.

Hierarchisches Muster: IDs dieses Typs folgen in der Regel einem hierarchischen Muster, insbesondere auf PCI/PCIe-Geräten:

  • VEN_XXXX identifiziert den Chiphersteller.
  • DEV_XXXX Geben Sie das genaue Modell des Geräts an.
  • SUBSYS_XXXXXXXXX Details zu Assembler-Varianten, Region usw.

Bei USB-Geräten finden wir Zeichenfolgen wie USB\VID_XXXX&PID_YYYY und manchmal die Seriennummer. Wenn ein Gerät nach einem Windows-Update nicht mehr funktioniert, ist das Kopieren der genauen HWID und deren Eingabe in die Suchmaschine des Herstellers oder in spezielle Datenbanken eine sehr genaue Methode, um den richtigen Treiber zu finden – selbst für ältere Hardware.

Tools wie Snappy Driver Installer Origin oder kommerzielle Treiberverwaltungslösungen nutzen diese Kennungen häufig, um Geräte den passenden Treibern zuzuordnen . Es gibt auch lokale Suchmaschinen, die mithilfe der eingebetteten HWIDs Hunderte von .inf-Dateien durchsuchen können. Dies ist äußerst hilfreich, wenn man zwar eine Bibliothek heruntergeladener Treiber besitzt, aber nicht mehr weiß, welcher Treiber zu welchem ​​Gerät gehört.

Ein praktischer Tipp für alle, die gerne organisiert arbeiten: Führen Sie eine Tabelle mit Spalten für VEN, DEV, SUBSYS, Beschreibung und Treiberpfad . Mithilfe von Funktionen wie MID() in Excel lassen sich diese Felder automatisch aus der HWID-Zeichenfolge extrahieren. Das spart Ihnen letztendlich viel Zeit und Mühe beim Ausprobieren schlecht dokumentierter Hardware.

Ergänzende Tools für die Arbeit mit USB-IDs

Obwohl der Schwerpunkt hier auf den Möglichkeiten von PowerShell und den in Windows integrierten Dienstprogrammen liegt , lohnt es sich, einige Hilfsprogramme zu kennen – insbesondere wenn Ihre Umgebung deren Installation zulässt –, die die Arbeit mit USB-Geräten erleichtern.

USB-Geräteanzeige (USBView) von Microsoft

Microsoft bietet das Dienstprogramm USB Device Viewer (USBView) kostenlos an ; es ist im Windows Driver Kit enthalten. Es bietet eine Baumansicht aller im System vorhandenen USB-Controller und -Geräte und zeigt übersichtlich die Felder idVendor, idProduct und andere Gerätebeschreibungsfelder an.

Schritte: Die grundlegenden Schritte sind:

  • Installieren Sie das entsprechende Windows Driver Kit-Paket und suchen Sie USBView.exe (üblicherweise im Pfad der Debugger, zum Beispiel Debuggers\x64).
  • Führen Sie das Programm aus und wählen Sie das USB-Gerät in der Baumstruktur auf der linken Seite aus.
  • Überprüfen Sie die Felder im rechten Bereich. idVendor und idProduct, zusammen mit dem Rest der Beschreibung.

Wenn Sie Treiber entwickeln, beispielsweise mit dem VISA Driver Development Wizard , sind diese Daten unerlässlich, um dem Treiber anhand seiner VID und PID mitzuteilen, welche Geräte er verarbeiten soll.

Online-USB-ID-Datenbanken

Wenn Sie das Gerät nicht physisch zur Hand haben, aber dessen Namen oder einen Teil seiner Kennung kennen, können Sie auch öffentliche USB-ID-Datenbanken nutzen. Auf diesen Seiten können Sie nach Modell, Marke oder sogar nach Fragmenten der VID/PID suchen. Sie erhalten dann die offiziellen Vendor-ID- und Product-ID- Werte, die für das jeweilige Gerät registriert sind.

Dies ist besonders nützlich, wenn Sie nur eine Teil-HWID haben oder Windows nur eine allgemeine Beschreibung liefert und Sie bestätigen müssen, welche VID/PID dazu gehört, bevor Sie nach einem kompatiblen Treiber suchen oder eine Geräteblockierungsrichtlinie anhand der ID anwenden.

Letztendlich macht Sie die Beherrschung von USB-IDs und anderen Hardware-Kennungen zu einer Art „Systemdetektiv“: Sie können nachverfolgen, welches Gerät einen Absturz verursacht hat, welches USB-Laufwerk wann an welchen Computer angeschlossen war oder warum ein Treiber nach einem Update nicht mehr geladen wurde . Mit PowerShell als zentralem Werkzeug, kombiniert mit dem Geräte-Manager, WMI, einem spezialisierten Hilfsprogramm und gegebenenfalls einem kleinen Flask-Server, verfügen Sie über alles, was Sie benötigen, um die USB-Infrastruktur Ihrer Umgebung zu überwachen und zu steuern – ohne auf umständliche Drittanbieterlösungen oder unsichere Annahmen angewiesen zu sein.