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-Key: 3229315944

Url: https://administrator.de/contentid/3229315944

Printed on: May 4, 2024 at 19:05 o'clock

Member: colinardo
Solution colinardo Jul 01, 2022 updated at 14:04:18 (UTC)
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
Member: Buerostuhlralleyfahrer
Buerostuhlralleyfahrer Jul 01, 2022 at 20:51:38 (UTC)
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