highsource

CSV mit : Delimiter einlesen und als Tabelle in CSV schreiben

Hallo Gemeinde,

ich komme leider nicht weiter.
Ich habe 100te Dateien welche ich mit PowerShell erzeugt habe.
Das dumme war, das ich beim Erstellen der Dateien die Daten nicht gleich formatiert habe.
Ich habe mir bereits ein Skript gebaut welches die Daten strukturiert und in eine CSV schreibt mit Doppelpunkt Trenner. Nun möchte ich das alles vor dem Doppelpunkt als Header (Kopfbereich) formatiert wird und das was nach dem Doppelpunkt die jeweiligen Daten sind.

Theoretisch benötige ich am Ende eine CSV-Datei mit Tabellenkopf und alle anderen gefunden Dateien nur die Daten, um diese Datei dann in Excel weiter zu bearbeiten.

Dieses Script liest erst einmal die Rohdatei, also die nicht formatierten Dateien und erzeugt eine ordentliche mit Delimiter :
clear
$pfad = "C:\Users\xxxx\Desktop\PC_Infos"  
$ausgabepfad = "C:\Users\xxx\Desktop\PC_Infos\Ausgabe"  

#inkl Unterordner
#$directories=(Get-ChildItem C:\Users\xxxx\Desktop\PC_Infos -File -Recurse).Name
# Ohne Dateien in Unterordnern
$directories=(Get-ChildItem C:\Users\xxx\Desktop\PC_Infos -File).Name

#lese alle Dateien im angegebenen Pfad aus und schreibe alle als CSV per ; getrennt zurück in Ausgabepfad
foreach ($item in $directories)
{
  write-host $item 
  Get-Content $pfad\$item -Encoding utf8 | ConvertFrom-Csv -Delimiter ':' |Select-Object Hostname |export-csv -delimiter ":" "$ausgabepfad\$item.csv" -notype  

}


Das ist dann die Erzeugte Datei
"SMBIOSBIOSVersion ":"M1UKT50A"  
"Manufacturer ":"LENOVO"  
"Name ":"M1UKT50A"  
"SerialNumber ":"PC1FC585"  
"Version ":"LENOVO - 1500"  
"Hostname":"PCCGHGS212"  
"Betriebssystemname":"Microsoft Windows 10 Education"  
"Betriebssystemversion":"10.0.19043 Nicht zutreffend Build 19043"  
"Betriebssystemhersteller":"Microsoft Corporation"  
"Betriebssystemkonfiguration":"Mitglied der Dom?ne/Arbeitsgruppe"  
"Typ des Betriebssystembuilds":"Multiprocessor Free"  
"Registrierter Benutzer":"User"  
"Registrierte Organisation":"Nicht zutreffend"  
"Produkt-ID":"00328-20090-00000-AA079"  
"Urspr?ngliches Installationsdatum":"04.05.2021, 08"  
"Systemstartzeit":"12.01.2022, 13"  
"Systemhersteller":"LENOVO"  
"Systemmodell":"10T70046GE"  
"Systemtyp":"x64-based PC"  
"Prozessor(en)":"1 Prozessor(en) installiert."  
"[01]":"Intel64 Family 6 Model 158 Stepping 11 GenuineIntel ~3096 MHz"  
"BIOS-Version":"LENOVO M1UKT50A, 17.02.2020"  
"Windows-Verzeichnis":"C"  
"System-Verzeichnis":"C"  
"Startger?t":"\Device\HarddiskVolume1"  
"Systemgebietsschema":"de;Deutsch (Deutschland)"  
"Eingabegebietsschema":"de;Deutsch (Deutschland)"  
"Zeitzone":"(UTC+01"  
"Gesamter physischer Speicher":"8.059 MB"  
"Verf?gbarer physischer Speicher":"4.581 MB"  
"Virtueller Arbeitsspeicher":"Maximale Gr??e"  
"Virtueller Arbeitsspeicher":"Verf?gbar"  
"Virtueller Arbeitsspeicher":"Zurzeit verwendet"  
"Auslagerungsdateipfad(e)":"C"  
"Dom?ne":"bla.local"  
"Anmeldeserver":"Nicht zutreffend"  
"Hotfix(es)":"9 Hotfix(e) installiert."  
"[01]":"KB5008876"  
"[02]":"KB4562830"  
"[03]":"KB4577586"  
"[04]":"KB4580325"  
"[05]":"KB5000736"  
"[06]":"KB5009543"  
"[07]":"KB5006753"  
"[08]":"KB5007273"  
"[09]":"KB5005699"  
"Netzwerkkarte(n)":"3 Netzwerkadapter installiert."  
"[01]":"Intel(R) Ethernet Connection (7) I219-V"  
"Verbindungsname":"Ethernet"  
"DHCP aktiviert":"Ja"  
"DHCP-Server":"192.168.0.1"  
"IP-Adresse(n)":  
"[01]":"192.168.1.80"  
"[02]":"fe80"  
"[02]":"Intel(R) Dual Band Wireless-AC 3165"  
"Verbindungsname":"WLAN"  
"Status":"Medien getrennt"  
"[03]":"Bluetooth Device (Personal Area Network)"  
"Verbindungsname":"Bluetooth-Netzwerkverbindung"  
"Status":"Medien getrennt"  
"Anforderungen f?r Hyper-V":"Erweiterungen f?r den VM-?berwachungsmodus"  
"Virtualisierung in Firmware aktiviert":"Ja"  
"Adress?bersetzung der zweiten Ebene":"Ja"  
"Datenausf?hrungsverhinderung verf?gbar":"Ja"  

Wie gesagt alles was vor der : steht soll der Tabellenkopf sein und das dahinter die jeweiligen Daten. Das beste wäre dann das alle anderen Dateien auch mit ausgelesen werden und in nur eine Datei geschrieben.
So sollte das dann zum Beispiel später aussehen zum weiteren verarbeiten in Excel.

SMBIOSBIOSVersion        Manufacturer       Name               SerialNumber      Version                     Hostname           usw.......
M1UKT50A                           LENOVO          M1UKT50A          PC1FC585         LENOVO - 1500       PCCGHGS212
M2UZT60A                           LENOVO          M3UKT65Z          PC1FC585         LENOVO - 1500       PCCGHGS213



Steh gerade echt auf dem Schlauch. Ich hoffe ich konnte das Problem erleutern .
Vielen Dank schon einmal für Hilfreiche Ideen.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 1934735486

Url: https://administrator.de/forum/csv-mit-delimiter-einlesen-und-als-tabelle-in-csv-schreiben-1934735486.html

Ausgedruckt am: 15.05.2025 um 16:05 Uhr

1915348599
Lösung 1915348599 17.02.2022 um 12:18:11 Uhr
Goto Top
$ergebnis = foreach ($item in Get-ChildItem "C:\Users\xxx\Desktop\PC_Infos" -File){  
    $ht = @{}
    Import-CSV $item.Fullname -Delimiter ":" -Header Name,Value | %{$ht.($_.Name) = $_.Value}  
    [pscustomobject]$ht
}
$ergebnis | export-csv .\fertig.csv -Delimiter ";" -NoTypeinformation -Encoding UTF8  
highsource
highsource 17.02.2022 um 12:34:25 Uhr
Goto Top
Besten Dank @1915348599, funktioniert genau wie es soll Top, wäre ich jetzt nicht so drauf gekommen.
Danke gelöst THX face-smile