Hardwareinventarisierung - Daten zusammenführen
Guten Abend - Ischowieda 
Mit Colinardos Unterstützung (ok, er hat die Hauptarbeit gemacht
) habe ich es geschafft die PCs mit der Seriennummer und einer firmeninternen Inventarnnummer in einer Datei abzuspeichern
Zusammenführen von Textdateien
Das einzige Problem ist, daß die Zeilen doppelt vorhanden, einmal mit und einmal ohne der Seriennummer, sind, aber damit kann ich leben.
Ich versuche jetzt die Monitordaten mit einzubinden was prinzipiell auch funktioniert, nur wenn der PC mehrere Bildschime bzw Bildschirm und Beamer, hat, scheitere ich.
Erster Schritt ist meine monitor.txt mit DumEDID.exe > monitor.txt. Dann wird der FQDN als erste Zeile eingefügt und dann werden die Leerzeichen und -zeilen entfernt. Das Ergebnis schaut dann so aus:
Dann läuft das angepaßte PowershellScript drüber
Der erste Monitor wird tadellos in der csv angezeigt, der zweite nicht mehr. Wie kann ich das schaffen, daß alle Monitore drinnen sind?
Franz
PS: Wenn ich ehrlich bin
dann verstehe ich den Großteil des Scripts, aber (leider) nicht alles
Mit Colinardos Unterstützung (ok, er hat die Hauptarbeit gemacht
Zusammenführen von Textdateien
Das einzige Problem ist, daß die Zeilen doppelt vorhanden, einmal mit und einmal ohne der Seriennummer, sind, aber damit kann ich leben.
Ich versuche jetzt die Monitordaten mit einzubinden was prinzipiell auch funktioniert, nur wenn der PC mehrere Bildschime bzw Bildschirm und Beamer, hat, scheitere ich.
Erster Schritt ist meine monitor.txt mit DumEDID.exe > monitor.txt. Dann wird der FQDN als erste Zeile eingefügt und dann werden die Leerzeichen und -zeilen entfernt. Das Ergebnis schaut dann so aus:
host=test.domain.intern
DumpEDIDv1.05
Copyright(c)2006-2015NirSofer
Website:http://www.nirsoft.net
*****************************************************************
Active:Yes
RegistryKey:DISPLAY\SAM04D4\4&8371761&0&UID50531072
MonitorName:SyncMaster
SerialNumber:H9XI405734
ManufactureWeek:16/2010
ManufacturerID:11596(0x2D4C)
ProductID:1236(0x04D4)
SerialNumber(Numeric):1263088180(0x4B493234)
EDIDVersion:1.3
DisplayGamma:2.20
......
......
*****************************************************************
*****************************************************************
Active:Yes
RegistryKey:DISPLAY\SAM04D4\4&8371761&0&UID50531072
MonitorName:SyncMaster
SerialNumber:HUT455U951
ManufactureWeek:21/2012
ManufacturerID:11596(0x2D4C)
ProductID:1236(0x04D4)
SerialNumber(Numeric):1263088180(0x4B493234)
EDIDVersion:1.3
DisplayGamma:2.20
......
......
*****************************************************************
Dann läuft das angepaßte PowershellScript drüber
# ---- Variablen bitte anpassen ---
# Pfad der Liste 1
$path1 = 'C:\Liste1.txt'
# Pfad der Liste 2
$path2 = 'C:\Liste2.txt'
# Pfad der Liste 3 die habe ich ja auch noch angefügt ;-)
$path2 = 'C:\monitor.txt'
# Ausgabepfad der Zusammenfassungsdatei
$mergepath = 'C:\merged_list.csv'
# ---------
# Liste der Computer und dereen Seriennummer per Regular Expression Group-Matching aus der ersten Datei extrahieren
# und über die Anzahl der Gruppen mit einer Schleife itterieren
[regex]::matches((gc $path1 | out-string),'(?ism)^PC-Name=([^\r\n]+)\s+^Seriennummer=([^\r\n]*)') | select -Expand Captures | %{
# Group-Matches aus dem Regex-Match Variablen zuweisen und eventuelle führende oder abschließende Leerzeichen entfernen
# Hostname
$hostname = $_.Groups[1].Value.trim()
# Seriennummer
$sn = $_.Groups[2].Value.trim()
# Inventarnummer in der zweiten Datei anhand des Hostnamens suchen und die Inventarnummer ebenfalls per Group-Matching auslesen
$inventarnummer = [regex]::match((gc $path2 | out-string),"(?ism)^Host=$([regex]::Escape($hostname)).*?^Inventarnummer=([^\r\n]*)") | select -Expand Groups | select -Index 1 | %{$_.Value.Trim()
# Von mir wurden die nächsten drei Zeilen erstellt
# Monitor
$MonitorType = [regex]::match((gc $path3 | out-string),"(?ism)^Host=$([regex]::Escape($hostname)).*?^MonitorName:([^\r\n]*)") | select -Expand Groups | select -Index 1 | %{$_.Value.Trim()
$MonitorSerie = [regex]::match((gc $path3 | out-string),"(?ism)^Host=$([regex]::Escape($hostname)).*?^SerialNumber:([^\r\n]*)") | select -Expand Groups | select -Index 1 | %{$_.Value.Trim()}
# Powershell-Objekt mit den Daten erstellen und ausgeben ## dieser Block wurde von mir durch den untenstehenden ersetzt
new-object PSObject -Property @{Host=$hostname;Seriennummer=$sn;Inventarnummer=$inventarnummer}
} | select Host,Seriennummer,Inventarnummer | export-csv $mergepath -Delimiter ";" -NoType -Encoding UTF8
#neu:
# Powershell-Objekt mit den Daten erstellen und ausgeben
new-object PSObject -Property @{Host=$hostname;Seriennummer=$sn;Inventarnummer=$inventarnummer;MonitorType=$MonitorType;MonitorSeriennummer=$MonitorSerie}
} | select Host,Seriennummer,Inventarnummer,MonitorType,MonitorSeriennummer,MonitorInventarnummer | export-csv $mergepath -Delimiter ";" -NoType -Encoding UTF8
Der erste Monitor wird tadellos in der csv angezeigt, der zweite nicht mehr. Wie kann ich das schaffen, daß alle Monitore drinnen sind?
Franz
PS: Wenn ich ehrlich bin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 304228
Url: https://administrator.de/forum/hardwareinventarisierung-daten-zusammenfuehren-304228.html
Ausgedruckt am: 09.04.2025 um 19:04 Uhr
1 Kommentar