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 :
Das ist dann die Erzeugte Datei
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.
Steh gerade echt auf dem Schlauch. Ich hoffe ich konnte das Problem erleutern .
Vielen Dank schon einmal für Hilfreiche Ideen.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
2 Kommentare
Neuester Kommentar

$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