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:
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:
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!
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
}
}
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*" }
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!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
6 Kommentare
Neuester Kommentar
Wieso werden hier keine Adress-Richtlinien benutzt?! Dann braucht man so ein Gefrickel mit Adressen überall entfernen erst gar nicht
oder
Zeppel
$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}}
}
$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=$_}}}
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 .Die Umgebung dort ist leider extrem veraltet. Würde man so definitiv nicht mehr aufbauen.