Hallo
Ich denke ich kann das nun als gelöst markieren.
Folgenden Code habe ich (DANKE, PowerShellAdmin) benutzt:
#Konsole bereinigen
cls
#Arraylist erzeugen
$user_list=New-Object System.Collections.ArrayList
$user_list_control=New-Object System.Collections.ArrayList
#Abfrage Benutzer
$users=Get-ADUser -LDAPFilter {(!useraccountcontrol:1.2.840.113556.1.4.803:=2)} -SearchBase "DC=XX,DC=XXX,DC=XXX" -Properties office,proxyaddresses, mail | where-object mail -ne $NULL
#Schleife geht durch sämtliche Benutzer
foreach($user in $users){
#Varibalen NULLEN
$mail_prim_smtp=$NULL
$mail_sek_smtp=$NULL
$mail_sip=$NULL
#Schleife arbeitet die Einträge im Attribut ab (innerhalb Benutzer)
foreach($mail in $user.proxyaddresses){
#Eintrag enthält eine Adresse
#$Mail
#prüft ob eine 2 in einer emailadresse enthalten ist und initiert parameter zum eintrag in kontrollliste
IF($mail -match "2"){
$control="1"
}
#prüft ob es NICHT die primäre Adresse ist
IF($mail -notmatch $user.mail){
#prüft ob es eine SMTP Adresse ist
IF($mail -match 'smtp:'){
$mail_sek_smtp+=$mail.Substring(5,($mail.Length-5))+''
}
}
}
#Benutzerobjekt erzeugen
$user_details = New-Object PSObject -Property @{
user_name=$user.Name
#primäre email aus Benutzer ermittelt
mail_prim_smtp=$user.mail
mail_sek_smtp=$mail_sek_smtp
office=$user.Office
}
#Nutzernamen Anteil vergleichbar machen durch kürzen der Domain
$user_sek_email_name=$mail_sek_smtp.replace("@SEK_DOMAIN.com","")
$user_prim_email_name=$user.mail.replace("@PRI_DOMAIN.com","")
#Benutzerobjekt Arraylist hinzufügen, wenn prim und sek Adresse ungleich
if( $user_sek_email_name -ne $user_prim_email_name) {
$user_list+=$user_details
}
#Ausgabe wenn Kontrollparameter control =1
IF($control -eq "1"){
$user_list_control+=$user_details
$control="0"
}
}
#Ausgabe kontrolliste
$user_list_control | Select-Object office, user_name, mail_prim_smtp, mail_sek_smtp | Sort-Object user_name | Export-Csv -Path c:\powershell\Mailaddress_to_check_control.txt -Append -NoTypeInformation
#Ausgabe
$user_list | Select-Object office, user_name, mail_prim_smtp, mail_sek_smtp | Sort-Object user_name | Export-Csv -Path c:\powershell\Mailaddress_to_check.txt -Append -NoTypeInformation
Für mich habe ich den zusätzlichen Punkt "Wenn Mailadressen eine Ziffer enthält, erzeuge eine weitere Datei" Das heisst hier (bei uns) das ein Benutzer schon "doppelt" existiert. Ich habe mir noch zur Aufgabe gemacht, die "Sekundären Addresses" zu separieren, damit das irgendwie eleganter wird. Aktuell wird das im Output als eine lange Zeile dargestellt, jedoch möchte ich erstmal Feedback geben. Vielen Dank für die Hilfe, ich hoffe ich kann da anderweitig auch mal helfen!