buerostuhlralleyfahrer
Goto Top

Adresslisten aus CSV-Dateien

Hallo zusammen.
Ich benötige bitte einmal Unterstützung bei einem CSV Import-Problem.
Ich brauche eine automatisierte Möglichkeit Adresslisten aus einer CSV Datei in Exchange zu erstellen.

Die CSV besteht aus 8 Spalten, für den Filter werden die ersten 2 Spalten benötigt.
Spalte A = Firma
Spalte B = Abteilung

Anonymisierter Auszug:
Firma A;Einkauf (FirmaA)
Firma A;Marketing (FirmaA)
Firma A;Einkauf (FirmaA)
Firma A;Vertrieb (FirmaA)
Firma B;Marketing (FirmaB)
Firma B;Vertrieb (FirmaB)

Spalte B ist Eindeutig, dies wurde beim Datenexport bereits über den Namen gekennzeichnet. Hinzu kommt, das SpalteB als ConditionalCustomAttribute1 am Kontakt hinterlegt wurde.

Jetzt benötige ich dafür unterschiedliche Adresslisten.
1. Eine Adressliste nach Firma. Die Filterwerte sollen dabei alle Abteilungen der Firma sein
2. Eine Adressliste je Abteilungsgruppe (Alle Einkauf; alle Verkauf)
die zweite könnte noch manuell erstellt werden, da es eine Hand voll Adressgruppen sind; bei der ersten nicht.

Bei bisheriger Versuch zur Erstellung ist funktionsfähig. Mir fehlt nur der Filter.

#Adresslisten erstellen

foreach ($List in $Kontakte)
{   
    $Firmenliste += $List.SpalteA
}
$Firmenliste = $Firmenliste | select -Unique

foreach ($Firma in $Firmenliste)
{
    New-AddressList -Name $Firma -Container "\" -IncludedRecipients MailContacts -ConditionalCustomAttribute1 $Alle_Werte_aus_SpalteB_zu_dieser_Firma  
}
Für Hilfe wäre ich sehr dankbar.
Allen bereits ein schönes Wochenende.

LG aus Bremen

Content-ID: 3229315944

Url: https://administrator.de/forum/adresslisten-aus-csv-dateien-3229315944.html

Ausgedruckt am: 06.04.2025 um 22:04 Uhr

colinardo
Lösung colinardo 01.07.2022 aktualisiert um 16:04:18 Uhr
Goto Top
Servus @Buerostuhlralleyfahrer, willkommen auf Administrator.de!
Für solche Gruppierungsaktionen eignet sich immer sehr gut das CMDLet Group-Object, somit entledigt man sich auch dem nachträglichen filtern mittels Where-Object.

Beispiel:
# demo liste (wird bei dir ersetzt durch dein Import-CSV Aufruf)
$liste = @'  
Firma;Abteilung
FirmaA;Marketing A
FirmaA;Marketing A
FirmaA;Verwaltung A
FirmaA;IT A
FirmaB;IT B
FirmaB;Lager B
'@ | ConvertFrom-CSV -Delimiter ";"  

# liste nach Firmen gruppieren (group-object liefert Objekte mit den Eigenschaften Count,Name,Group)
# in der Eigenschaft "Name" ist der Name der Eigenschaft enthalten nach der gruppiert wurde 
# in der Eigenschaft "Group" sind die gruppierten Zeilen für die Firma als Array enthalten 
foreach($firma in $liste | group-object Firma){
    # Abteilungen der Firma
    $abteilungen = $firma.Group.Abteilung | select -Unique
    # Adressliste für Firma erstellen
    New-Addresslist -Name $firma.Name -IncludedRecipients MailContacts -ConditionalCustomAttribute1 $abteilungen
    # eine Adressliste für jede Abteilung der jeweligen Firma
    foreach($abteilung in $abteilungen){
        New-Addresslist -Name $abteilung -IncludedRecipients MailContacts -ConditionalCustomAttribute1 $abteilung
    }
}
Grüße Uwe
Buerostuhlralleyfahrer
Buerostuhlralleyfahrer 01.07.2022 um 22:51:38 Uhr
Goto Top
Moin Uwe,

vielen lieben Dank für die schnelle uns super Hilfe.
Es läuft klasse und genau das was ich gesucht habe.
Ich befürchte ich werde einige Skripte mal überarbeiten müssen. das vorherige Gruppieren scheint auch noch schneller zu laufen als das nachträgliche Filtern.

Beste Grüße aus Tübingen