blowdow
Goto Top

Angeschlossene Bildschirm-Seriennummern per WMI herausfinden

Guten Tag allerseits

Über die Suche habe ich leider nichts gefunden, wie auch mit Dr. google nicht das passende.

Über das Netzwerk möchte ich gerne die Seriennummer des Bildschirmes (1 oder 2 BS) herausfinden. Ich habe gelesen, dies sollte am besten mit WMI gehen. Gefunden habe ich den WMI-Befehl:

wmic path Win32_MonitorDetails

Heraus kommt bei mir lediglich:

Node - CPName
ERROR:
Description = Invalid class


Müsste ich denn zuvor diese "class" irgendwie installieren oder aktivieren?

Oder, wenn nicht per WMI, gäbe es eine andere einfache Abfrage für die Seriennummer der angehängten Bildschirme? VBS? Batch?

Ich danke euch und Gruss
blowdow

Content-Key: 244938

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

Printed on: April 18, 2024 at 18:04 o'clock

Member: colinardo
Solution colinardo Jul 29, 2014 updated at 10:24:44 (UTC)
Goto Top
Hallo blowdow,
im Namespace root\wmi findest du die gewünschten Informationen in der Klasse WMIMonitorID. Die Seriennummer besteht dort aus einem Array von ASCII Werten die in Char umgewandelt die Seriennummer ergeben:
gwmi WmiMonitorID -Namespace root\wmi | %{($_.SerialNumberID -ne $null | %{[char]$_}) -join ""}
liest die Seriennummern von allen angeschlossenen Monitoren aus (Powershell).

Grüße Uwe
Member: blowdow
blowdow Jul 29, 2014 at 10:14:51 (UTC)
Goto Top
Hallo Uwe

Danke für deine Antwort.

Ich komme leider nicht ganz weiter. Denn, wenn ich deinen Befehl in einer CMD/DOS-Box eingebe, so kommt die Meldung:

'gwmi' is not recognized as an internal or external command,
operable program or batch file.

Gebe ich den Befehl in einem "wmic" ein, so kommt die Meldung:

gwmi - Alias not found.
wmic:root\cli>
Member: colinardo
Solution colinardo Jul 29, 2014 updated at 10:44:03 (UTC)
Goto Top
Das ist ja auch ein Powershell Befehl face-wink

Wen du es mit wmic auf einer normalen Konsole machen willst lautet der Befehl:
wmic /Namespace:\\root\wmi Path WmiMonitorID get SerialNumberID
Wie oben bereits geschrieben ist die Ausgabe ein Array aus ASCII-Dezimalwerten die, umgewandelt die Seriennummer bilden. Ein Batch-Script für die Umwandlung von ASCII Werten in Zeichen gibt es hier.
Member: blowdow
blowdow Jul 29, 2014 at 11:55:18 (UTC)
Goto Top
Nun hat dein Befehl super funktioniert. Dankeschön!

Unter deinem Link gibt es für mich zu viele verschiedene Codes und Code-Teile usw. Blicke da leider nicht ganz durch... Braucht es für die Umwandlung denn tatsächlich ein Script, welches über 200 Zeilen lang ist?
Member: colinardo
colinardo Jul 29, 2014 updated at 12:08:15 (UTC)
Goto Top
Zitat von @blowdow:

Unter deinem Link gibt es für mich zu viele verschiedene Codes und Code-Teile usw. Blicke da leider nicht ganz durch...
Braucht es für die Umwandlung denn tatsächlich ein Script, welches über 200 Zeilen lang ist?
entweder das Script, oder du nutzt eine externe exe die das erledigt. Oder ein VBS das du in dein Batch-Script integrierst.

Deswegen habe ich ja ein Powershell-Script gepostet, das macht das schon automatisch, und das ihr Batchies langsam mal umsteigt face-wink ich arbeite ja heute auch nicht mehr mit Win 3.1 face-smile
Member: colinardo
colinardo Jul 29, 2014 updated at 12:32:00 (UTC)
Goto Top
Zitat von @blowdow:
Braucht es für die Umwandlung denn tatsächlich ein Script, welches über 200 Zeilen lang ist?
nicht unbedingt, wenn du es mit einem temporärem VBS innerhalb der Batch machst:
@echo off &setlocal
set "tempvbs=%temp%\chr.vbs"  

:: VBS Erzeugen
echo arrInput = Split(Replace(Replace(Replace(WScript.Arguments(0),"{",""),"}","")," ",""),",",-1,1)>"%tempvbs%"  
echo For i = 0 To UBound(arrInput)>>"%tempvbs%"  
echo strOut = strOut ^& Chr(arrInput(i))>>"%tempvbs%"  
echo Next>>"%tempvbs%"  
echo WScript.Echo strOut>>"%tempvbs%"  
:: -------------------------------

:: Seriennummer-Array exxtrahieren und an das VBS verfüttern, die Ausgabe ist dann die Seriennnummer
for /f "tokens=2 delims==" %%a in ('wmic /Namespace:\\root\wmi Path WmiMonitorID get SerialNumberID /format:list ^| findstr /b SerialNumberID') DO @(  
 	cscript //NOLOGO "%tempvbs%" "%%a"  
)
Grüße Uwe
Member: blowdow
blowdow Aug 07, 2014 at 06:29:06 (UTC)
Goto Top
Hi Uwe

Ich melde mich dann schon noch, bin bisher einfach noch nicht dazu gekommen alles zu testen. Dies nur als Info face-smile

MFG