penkathi
Goto Top

Device Descriptor auslesen vom Device

Ist es möglich mit Powershell den DeviceDescriptor eines angeschlossenen Gerätes z.B. USB-Tastatur auszulesen?

Und zwar direkt vom Device und nicht die in der Registry eingetragenen Werte.

D.h. ich suche nach einer Möglichkeit wie per Linux: lsusb -v -d <Device>

den original Device Descriptor auszulesen.

Z.B. benötige ich die Werte von idVendor, iProduct u.a. siehe Bild (Beispielbild stammt von einer Website).

2023-08-17 12 43 07

wenn ich via Powershell mit "Get-vmiObject-Class w32_keyboard" arbeite, bekomme ich diese Werte nicht,
siehe Bild.

2023-08-17 12 37 15

Hat jemand eine Idee oder kann weiterführende Infos geben?

Für mich ist es wünschenswert diese Angaben nicht als Windows nativ names aufgelöst zu bekommen.

Danke im voraus.

Content-ID: 8177925381

Url: https://administrator.de/contentid/8177925381

Printed on: October 9, 2024 at 22:10 o'clock

Kraemer
Kraemer Aug 17, 2023 at 11:10:32 (UTC)
Goto Top
Moin,

kann die nicht folgen (deine Tippfehler machen es einem auch nicht leicht).
Welche Werte genau vermisst du?

Gruß
PenKathi
PenKathi Aug 17, 2023 updated at 11:21:00 (UTC)
Goto Top
Ich vermisse die Werte idVendor und iProduct.

Vor allem möchte ich diese Werte direkt vom Gerät ausgelesen bekommen und nicht die Werte, welche die Registry liefert.

Sorry, wegen der Tippfehler

Gruß
Kraemer
Kraemer Aug 17, 2023 at 11:20:20 (UTC)
Goto Top
Die findest du in der DeviceID
DeviceID                    : USB\VID_046D&PID_C52B&MI_00\8&31F70423&1&0000
PenKathi
PenKathi Aug 17, 2023 updated at 11:26:25 (UTC)
Goto Top
Bin ich jetzt dumm? Wo steht da eine Information wie "Wired Keyboard 4" ?????

Oder der Aufgelöste Name des Herstellers?
NordicMike
NordicMike Aug 17, 2023 at 11:26:11 (UTC)
Goto Top
Ich weiss nicht ob du es direkt in der Powershell benötigst, jedoch zeigt dir diese VID auch der Gerätemanager an.
PenKathi
PenKathi Aug 17, 2023 at 11:34:28 (UTC)
Goto Top
Im Geräte Manager (Windows) wird mir meine Tastatur (abweichend vom Linux Screenshot) als HID-Tastatur angezeigt,
auch wenn ich sämtliche Einträge unter Eigenschaften / Details durchsehe, finde ich z.B. nicht den Klartext Herstellernamen.

Wenn ich per USBview schaue, bekomme ich aber den Hersteller. Siehe Bild.

2023-08-17 13 33 25

Außerdem nutzen mir die Infos aus einer GUI nichts, da ich das ganze für ein Powershell-Script brauche.
PenKathi
PenKathi Aug 17, 2023 at 11:42:21 (UTC)
Goto Top
Zusätzliche Frage:

Spiegelt der Wert

2023-08-17 13 40 36

den Hardware Ländercode wieder oder das im Windows System eingestellte Layout?
Kraemer
Kraemer Aug 17, 2023 at 12:03:45 (UTC)
Goto Top
Zitat von @PenKathi:

Bin ich jetzt dumm?

keine Ahnung. Was genau verstehst du an dem Wort "genau" nicht?
Keine Lust hier noch eine Sekunde zu investieren...
PenKathi
PenKathi Aug 17, 2023 at 12:19:11 (UTC)
Goto Top
Dann noch mal zur Erklärung:

Unter Linux folgende Ausgabe (Ist nur ein Beispiel, nicht von mir):

2023-08-17 14 10 32

Wobei die "4" hierbei den Ländercode (Hardwareseitig) der Tastatur wiedergibt.

Dieses wird benötigt um das Tastaturlayout zu bestimmen, falls der Wert von bCountryCode nicht gesetzt ist.

Im Powershell sehe ich aber nur iProduct 0x02.

Wie also bekomme ich via Powershell, meinetwegen auch via wmi, die beötigten Informationen?
PenKathi
PenKathi Aug 17, 2023 at 12:21:01 (UTC)
Goto Top
Genauso, wie idVendor nur als 0x wie auch immer angegeben ist aber die Auflösung des Herstellernamens fehlt.
7907292512
7907292512 Aug 17, 2023 updated at 12:33:43 (UTC)
Goto Top
Moin.
Im Powershell sehe ich aber nur iProduct 0x02.
Ist Normal denn das Feld ist immer nur ein Index Wert !

Guckst du einfach mal in die USB-Device-Descriptor Specifications:
https://www.beyondlogic.org/usbnutshell/usb5.shtml#DeviceDescriptors

iProduct 1 Index Index of Product String Descriptor
The idVendor and idProduct are used by the operating system to find a driver for your device. The Vendor ID is assigned by the USB-IF.

Das was Linux da oben in deiner Grafik hin schreibt ist der Linux-Treibername den es zugewiesen hat, das steht also niemals im Gerät sondern in der Driver-Description(inf) bzw. unter Linux in der USB Device List!!

Es zählen einzig und allein die USB/PCI PNP Device-IDs zur eindeutigen Identifizierung.

Gruß siddius
Kraemer
Kraemer Aug 17, 2023 at 12:29:36 (UTC)
Goto Top
Zitat von @PenKathi:

Genauso, wie idVendor nur als 0x wie auch immer angegeben ist aber die Auflösung des Herstellernamens fehlt.

http://www.linux-usb.org/usb.ids
http://pci-ids.ucw.cz/
PenKathi
PenKathi Aug 17, 2023 updated at 12:38:14 (UTC)
Goto Top
Und wie bekomme ich diese Informationen via Powershell, wmi oder ähnlichem von der Kommandozeile im Windows geliefert und zwar direkt als Klartext ohne erst mühselig ein Programm dafür zu schreiben?

Und zwar für jede im PC verbaute Hardware? Da sich das was ich realisieren möchte nicht nur auf Tastaturen oder USB bezieht?
7907292512
7907292512 Aug 17, 2023 updated at 12:52:55 (UTC)
Goto Top
Get-PnpDevice
Get-PNPdevice | select * | Out-Gridview
Mehr bekommst du mit Bordmitteln nicht.
Ansonsten musst du dir selbst ne DB organisieren oder mit einer aus dem Web abgleichen (Webservice etc.).

Oder mal AIDA64 anschauen.
PenKathi
PenKathi Aug 17, 2023 at 13:00:28 (UTC)
Goto Top
@7907292512, erst einmal Danke.

AIDA nutzt nichts, da die Werte in einem Script gebraucht werden welches sich automatisch aktualisiert wenn entweder ein neues Gerät angeschlossen wird, bzw. bzgl. Tastaturen sogar erkennen soll wenn Tastatur xyz von X gleichzeitig angeschlossenen Tastaturen benutzt wird.

Außerdem frage ich mich, wie z.B. die Namen in Systemsteuerung / Geräte und Drucker aufgelöst werden. Solch eine DB müsste doch eigentlich im System schon irgendwo vorhanden sein.

Schade auch das es im Powershell keinen wie auch immer gearteten Schalter bzw. Parameter gibt der es einem ermöglicht solch weiterführenden Informationen darzustellen.

Ich vergleiche dazu mal die Möglichkeit unter Linux per Parameter zusätzliche Informationen anzuzeigen.

In der Hinsicht kann ich Windows nur als Windumm bezeichnen.

@alle: Trotzdem, vielen Dank für die Hilfe oder den Versuch der Hilfe.

LG
Kraemer
Kraemer Aug 17, 2023 at 13:30:47 (UTC)
Goto Top
Ich kann dein gezetere nicht verstehen. Es steht dir frei, ein entsprechendes Modul zu bauen. Genau so, wie es mit lsusb schon andere vor dir getan haben. Die haben sogar schon mehr getan - die haben nämlich die Datenbank aufgebaut, die du brauchst, um so ein Vorhaben umzusetzen. Und das Beste ist: Du darfst diese benutzen...
7907292512
Solution 7907292512 Aug 17, 2023 updated at 13:36:08 (UTC)
Goto Top
Zitat von @PenKathi:

@7907292512, erst einmal Danke.

AIDA nutzt nichts, da die Werte in einem Script gebraucht werden welches sich automatisch aktualisiert wenn entweder ein neues Gerät angeschlossen wird, bzw. bzgl. Tastaturen sogar erkennen soll wenn Tastatur xyz von X gleichzeitig angeschlossenen Tastaturen benutzt wird.
Tja eben doch, AIDA hat auch einen commandline Modus!
Außerdem frage ich mich, wie z.B. die Namen in Systemsteuerung / Geräte und Drucker aufgelöst werden. Solch eine DB müsste doch eigentlich im System schon irgendwo vorhanden sein.
Die kommen wie schon oben gesagt aus den installierten Treiber-Dateien (*.inf).

Die "Namen" und "Descriptions" der Geräte stehen aber auch schon in den WMI oder PNP Infos!

Was meinst du wohl warum es so Programme wie AIDA gibt, die Hersteller pflegen aufwendig eigene Datenbanken für die detaillierten Informationen rund um die Geräte.
PenKathi
PenKathi Aug 17, 2023 at 13:35:46 (UTC)
Goto Top
Trotzdem ist AIDA leider nutzlos, da es ja separat gekauft werden muss.

Aufgabe ist aber eine Realisierung mit System eigenen Mitteln.

Trotzdem noch mal danke.
7907292512
7907292512 Aug 17, 2023 updated at 13:38:27 (UTC)
Goto Top
Aufgabe ist aber eine Realisierung mit System eigenen Mitteln.
Dann mach, scheint ja deine Hausaufgabe zu sein, Infos was Sache ist haben wir dir ja zu Genüge geliefert face-smile.
Trotzdem ist AIDA leider nutzlos, da es ja separat gekauft werden muss.
Dan musst du halt selbst Gehirnschmalz reinstecken, ummesöns kommt auch kein Hähnchen in die Kauleiste geflogen.
PenKathi
PenKathi Aug 17, 2023 at 13:38:40 (UTC)
Goto Top
Ach ja, leider stehen die Namen nicht in WMI oder PNP Infos, bzw. ich habe keine Möglichkeit gefunden dieses Anzuzeigen.

WMI liefert auch nur Ausgaben wie Standard-Tastatur bzw. HID-Eingabegerät oder ähnliches.

LG
7907292512
7907292512 Aug 17, 2023 updated at 13:39:54 (UTC)
Goto Top
Ach ja, leider stehen die Namen nicht in WMI oder PNP Infos,
Doch, nochmal genau hinschauen.
Kraemer
Kraemer Aug 17, 2023 at 13:41:59 (UTC)
Goto Top
Ich möchte hier dann doch noch einmal auf den ERSTEN Post in diesem Thread verweisen:

Zitat von @Kraemer:

Welche Werte genau vermisst du?

Da der TO nicht in der Lage ist, diese einfache Frage zu beantworten, ist das alles hier raten im freien Fall...
7907292512
Solution 7907292512 Aug 17, 2023 updated at 13:52:14 (UTC)
Goto Top
Ansonsten liefert auch devcon (kostenlos) alles nötige, was aber die o.g. Befehle auch schon liefern, nur mit ein paar Zusatzfeatures
https://learn.microsoft.com/de-de/windows-hardware/drivers/devtest/devco ...
Da der TO nicht in der Lage ist, diese einfache Frage zu beantworten, ist das alles hier raten im freien Fall...
Schau mal in das Profil des TO.
PenKathi
PenKathi Aug 17, 2023 at 13:46:15 (UTC)
Goto Top
@Kraemer

Es hat sich herausgestellt, das die Werte in Form von 0x... wie auch immer vorliegen, aber leider keine Auflösung von z.B. Herstellername usw. stattfindet (also in Klartext Namen).

Des weiteren gibt es anscheinend kein Windows eigenes Mittel mit dem ich diese Werte inkl. der Auflösung in Klartext von der Kommandozeile bekomme. Anscheinend weder per Powershell, WMI oder ähnlichem.

LG
7907292512
Solution 7907292512 Aug 17, 2023 at 13:51:01 (UTC)
Goto Top
Des weiteren gibt es anscheinend kein Windows eigenes Mittel mit dem ich diese Werte inkl. der Auflösung in Klartext von der Kommandozeile bekomme. Anscheinend weder per Powershell, WMI oder ähnlichem.
Hatte ich doch oben schon gezeigt Get-PNPDevice zeigt das alles im Klartext

screenshot

screenshot
PenKathi
PenKathi Aug 17, 2023 updated at 14:02:08 (UTC)
Goto Top
Habe dazu eine private Nachricht geschrieben, nur finde ich solche Kommentare bzgl. Arbeitslos unter aller Sau.
PenKathi
PenKathi Aug 17, 2023 at 14:01:05 (UTC)
Goto Top
Get-PnpDevice zeigt leider unter Manufacturer nur

2023-08-17 16 00 41
7907292512
7907292512 Aug 17, 2023 updated at 14:16:11 (UTC)
Goto Top
Wenn kein expliziter device spezifischer Hersteller-Treiber genutzt wird, normal.
Wie nun zum xten mal wiederholt, windows zieht evt. vorhandene Infos aus den Treiber-Dateien (C:\windows\inf\*.inf), genauso wie Linux aus dessen Listen und Treiber-Metadaten.
Sind das nunmal Standard-Treiber, dann steht da auch nicht mehr.
PenKathi
PenKathi Aug 17, 2023 at 14:16:02 (UTC)
Goto Top
Also, nutzlos.

Trotzdem danke, ich schließe diesen Thread!
Kraemer
Kraemer Aug 17, 2023 at 14:28:57 (UTC)
Goto Top
Zitat von @PenKathi:

Habe dazu eine private Nachricht geschrieben, nur finde ich solche Kommentare bzgl. Arbeitslos unter aller Sau.

wer "Arbeitslos" als Beruf in ein Forenprofil schreibt, kann nur Masochist oder Realitätsfremd sein

Und dein Problem ließe sich relativ elegant lösen, wenn das keine völlig unbekannte Hardware ist.

Wer nicht will, der hat schon...
PenKathi
PenKathi Aug 17, 2023 updated at 14:58:42 (UTC)
Goto Top
Nein, es ist nicht wirklich gelöst, nur anscheinend mit Windows internen Mitteln nicht lösbar.

Und so etwas wie "Arbeitslos" in Bezug auf mein Fachwissen zu schreiben finde ich daneben, da es sich so anhört als ob ich auf Grund fehlenden Wissens Arbeitslos bin, dieses hat in meinem Fall aber gesundheitliche Gründe.

Dementsprechend ...

Dazu kommt noch das ich die letzten Jahre Hauptsächlich auf Linux Ebene gearbeitet habe und bisher kaum etwas mit Powershell machen musste.

LG