Powershell, Export in CSV
Guten Morgen,
ich versuche mich gerade daran ein Export einer CSV zu gestalten.
Was ich bisher hinbekommen habe, ist es die Werte so zu exportieren.
"
Bei einigen Benutzern hat das extensionAttribute12 zwei oder mehr Werte eingetragen. Ich versuche nun, wenn ein Benutzer weitere Werte eingetragen hat diesen in eine weitere Zeile zu übertragen.
Also so sollte das dann ausehen
"
Hab ihr vielleicht eine Lösung wie man das lösen könnte?
Gruß
Peter
ich versuche mich gerade daran ein Export einer CSV zu gestalten.
Was ich bisher hinbekommen habe, ist es die Werte so zu exportieren.
"samaccountname";"extensionattribute15";"extensionAttribute12
"mmusterman1";"36128236126975442";"90700800;90313800"
"mmusterman2";"33128986h27039788";"20312801
Bei einigen Benutzern hat das extensionAttribute12 zwei oder mehr Werte eingetragen. Ich versuche nun, wenn ein Benutzer weitere Werte eingetragen hat diesen in eine weitere Zeile zu übertragen.
Also so sollte das dann ausehen
"samaccountname";"extensionattribute15";"extensionAttribute12
"mmusterman1";"36128236126975442";"90700800"
"mmusterman1";"36128236126975442";"90313800"
"mmusterman2";"33128986h27039788";"20312801
Hab ihr vielleicht eine Lösung wie man das lösen könnte?
Gruß
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 480857
Url: https://administrator.de/forum/powershell-export-in-csv-480857.html
Ausgedruckt am: 21.04.2025 um 22:04 Uhr
8 Kommentare
Neuester Kommentar
Ich antworte jetzt mal ohne den genauen Syntax der Powershell zu kennen, aber die Logik ist schon mal in jeder Programmiersprache die Gleiche:
Ließ die nächste Zeile in eine Variable
Splitte die Variable in mehrere Variablen mit dem Trennzeichen ;
Filtere alle Anführungszeichen heraus
Schreibe die Variable1, Variable2 und Variable3 in eine neue Datei und ein Zeilenwechsel dahinter, setze neue Anführungszeichen dazu
Falls eine vierte Variable existiert, schreibe Variable1, Variable2 und Variable4 in die neue Datei und einen Zeilenwechsel dahinter, setze neue Anführungszeichen dazu
Falls eine fünfte Variable existiert, schreibe Variable1, Variable2 und Variable5 in die neue Datei und einen Zeilenwechsel dahinter, setze neue Anführungszeichen dazu
(Überlege selbst selbst wie viel Extensions maximal vorkommen können)
Lösche Deine x Variablen und ließ die nächste Zeile ein
Ließ die nächste Zeile in eine Variable
Splitte die Variable in mehrere Variablen mit dem Trennzeichen ;
Filtere alle Anführungszeichen heraus
Schreibe die Variable1, Variable2 und Variable3 in eine neue Datei und ein Zeilenwechsel dahinter, setze neue Anführungszeichen dazu
Falls eine vierte Variable existiert, schreibe Variable1, Variable2 und Variable4 in die neue Datei und einen Zeilenwechsel dahinter, setze neue Anführungszeichen dazu
Falls eine fünfte Variable existiert, schreibe Variable1, Variable2 und Variable5 in die neue Datei und einen Zeilenwechsel dahinter, setze neue Anführungszeichen dazu
(Überlege selbst selbst wie viel Extensions maximal vorkommen können)
Lösche Deine x Variablen und ließ die nächste Zeile ein

Eigentlich ganz simpel, du brauchst nur zwei verschachtelte For Schleifen, die eine die über die User itteriert und die innere die über ein Split des Attributs itteriert und ein der innersten erzeugst du ein Custom Object mit den gewünschten Daten
$users = get-aduser -Filter * -Properties extensionAttribute15,extensionAttribute12
$data = foreach($user in $users){
foreach($item in $user.extensionAttribute12.split(';')){
[pscustomobject]@{SamAccountName=$user.SamAccountName;extensionattribute15=$user.extensionattribute15;extensionAttribute12=$item}
}
}
$data | export-csv .\Export.csv -Delimiter ';' -NoType -Encoding UTF8

Mach halt einfach noch eine IF Abfrage rein die prüft ob der Wert des Extension Attributs nicht $NULL ist.
So weit soll man doch zumindest mit selbst mitdenken können oder?
So weit soll man doch zumindest mit selbst mitdenken können oder?
$users = get-aduser -Filter * -Properties extensionAttribute15,extensionAttribute12
$data = foreach($user in $users){
$attributes = $user.extensionAttribute12
If ($attributes -ne $null){
foreach($item in $attributes.split(';')){
[pscustomobject]@{SamAccountName=$user.SamAccountName;extensionattribute15=$user.extensionattribute15;extensionAttribute12=$item}
}
}else{
[pscustomobject]@{SamAccountName=$user.SamAccountName;extensionattribute15=$user.extensionattribute15;extensionAttribute12=""}
}
}
$data | export-csv .\Export.csv -Delimiter ';' -NoType -Encoding UTF8

Zitat von @NordicMike:
Deswegen habe ich es ihm als Beschreibung gegeben, damit Du ihm nicht alles vorkauen musst
Damit würde der ja in 10 Jahren noch hier an der Frage rumgurken Deswegen habe ich es ihm als Beschreibung gegeben, damit Du ihm nicht alles vorkauen musst

Na dann mach et juuht.