cargoluxpilot748
Goto Top

PS Skript, das SMTP Einträge nur von bestimmten Benutzern entfernt

Hallo zusammen,

ich habe den Auftrag ein PS Skript zu schreiben, das eine alte, ausgelaufene Maildomäne bei Benutzerpostfächern entfernt. Zum Test sollen diese allerdings vorerst nur bei Benutzern einer bestimmten Abteilung entfernt werden.

Als Ansatz habe ich folgendes Skript:
        
$mailbox = Get-Mailbox * -ResultSize unlimited
        $mailbox | foreach {
         for ($i=$_.EmailAddresses.Count;$i -ge 0; $i--)
    {
            $address = $_.EmailAddresses[$i]
            if ($address.SmtpAddress -like "*@test.de" )  
    {
            Write-host("Remove smtp adress: " + $address.AddressString.ToString() )  
            $_.EmailAddresses.RemoveAt($i)
    }$
            $_|set-mailbox -EmailAddresses $_.EmailAddresses
    }
}
Dieses funktioniert soweit und löscht bei allen Exchange-Konten den SMTP Eintrag mit der Adresse "*@test.de".

Jetzt ist allerdings gefordert, dass der Eintrag zunächst nur bei Personen der Abteilung XY entfernt werden soll.

An die Info über die Abteilung komme ich allerdings nur mit dem Befehl "Get-User". Get-Mailbox spuckt keine Infos über das department eines Benutzers aus.

Jetzt habe ich natürlich schon etwas rumgebastelt und mir die entsprechenden User der Abteilung XY gefiltert:
$Abteilung = "XY"  
$Personen = Get-User -ResultSize unlimited | Where-Object {$_.Department -eq $Abteilung -and $_.name -notlike "admin*" -and $_.name -notlike "admcli*" }   
Nur scheitert es bei mir daran, die zwei Befehle übergreifend zu nutzen, da komme ich mit meinem Wissen an meine Grenzen. Zwei Tage Recherche und Testen haben bisher zu keinem Erfolg geführt. Vielleicht kann mir ja jemand von hier auf die Sprünge helfen oder hat eine bessere Idee.

Im Endeffekt sollen einfach alle SMTP Adressen mit "*test.de" bei Benutzern, die sich in der Abteilung XY befinden entfernt werden.

Besten Dank im Voraus!

Content-ID: 7774038205

Url: https://administrator.de/forum/ps-skript-das-smtp-eintraege-nur-von-bestimmten-benutzern-entfernt-7774038205.html

Ausgedruckt am: 22.12.2024 um 10:12 Uhr

Snuffchen
Snuffchen 07.07.2023 um 15:06:25 Uhr
Goto Top
Du kannst das Get-Mailbox ja schon direkt auf die OrgUnit filtern

$mailbox = Get-Mailbox -OrganizationalUnit "XY"
CargoluxPilot748
CargoluxPilot748 07.07.2023 um 15:25:04 Uhr
Goto Top
Danke schon mal für Deine Antwort. Das Problem ist nur, dass der Kunde die Abteilungen nicht in OUs unterteilt hat, sondern alle Mitarbeiter in einer OU liegen. Gefiltert werden können sie also nur mit dem “Department” Attribut.
7426148943
Lösung 7426148943 07.07.2023 aktualisiert um 16:23:14 Uhr
Goto Top
Wieso werden hier keine Adress-Richtlinien benutzt?! Dann braucht man so ein Gefrickel mit Adressen überall entfernen erst gar nicht
$abteilung = "Vertrieb"  
foreach($user in Get-User -Filter "Department -eq '$abteilung' -and Name -notlike 'admin*' -and Name -notlike 'admcli*'"){  
    Get-Mailbox $user.SamAccountName | %{$_.EmailAddresses | ?{$_ -like '*@test.de' -and !$_.IsPrimaryAddress}} | %{Set-Mailbox $user.SamAccountName -EmailAddresses @{Remove=$_.ProxyAddressString}}  
}
oder
$abteilung = "Vertrieb"  
$mailfilter = '*@test.de'  
Get-ADUser -Filter "Department -eq '$vertrieb' -and -and Name -notlike 'admin*' -and Name -notlike 'admcli*' -and ProxyAddresses -like '$mailfilter'" -Properties proxyAddresses -PipelineVariable user | %{$_.ProxyAddresses | ?{$_ -like '$mailfilter' -and $_ -cnotmatch '^SMTP:'} | %{Set-Mailbox $user.SamAccountName -EmailAddresses @{Remove=$_}}}  
Zeppel
CargoluxPilot748
CargoluxPilot748 07.07.2023 um 15:57:23 Uhr
Goto Top
Danke Dir, werde ich Montag mal testen. Sorry, hab echt noch nicht so die Ahnung von PS. Bin gerade am Lernen und noch etwas auf Hilfe angewiesen.
CargoluxPilot748
CargoluxPilot748 07.07.2023 um 15:58:58 Uhr
Goto Top
Die Umgebung dort ist leider extrem veraltet. Würde man so definitiv nicht mehr aufbauen.
7426148943
7426148943 07.07.2023 aktualisiert um 16:25:46 Uhr
Goto Top
Zitat von @CargoluxPilot748:

Die Umgebung dort ist leider extrem veraltet. Würde man so definitiv nicht mehr aufbauen.
Deswegen lässt man da wohl auch einen Azubi ran der das ganze dann gleich in die Wüste schicken kann face-smile.