Wissen

Massenänderung UPN-Suffix

Es ist ja bekanntlich Best Practice den UPN (UserPrincipalName bzw. Benutzeranmeldename) möglichst gleich zur primären Mailadresse zu halten. Dies beugt auch Verwirrung bei Usern vor, da der UPN wie eine Mailadresse aussieht es allerdings nicht ist.

Was nun allerdings, wenn sich aus irgendeinem Grund die Domäne der Mailadresse ändert? Beispielsweise von .de nach .com
Nun könnte man natürlich einen Azubi wochenlang damit beschäftigen, im Active Directory Benutzer und Computer jeden User zu öffnen und dort den neuen Suffix auszuwählen. ;)
Was aber wenn man keinen Azubi hat oder der Betriebsrat an der Tür klopft und sagt man solle doch den armen Auszubildenden nicht so quälen? Dann kann man natürlich die PowerShell bemühen und das Ganze geht schnell von der Hand.

set-aduser

 

$Users = Get-ADUser -Filter {Enabled -eq $true} -SearchBase "OU=zz-Testing,OU=Benutzer,DC=itler,DC=net" | Where-Object -Property UserPrincipalName -Like "*@ITler.de" | Where-Object -Property UserPrincipalName -NotLike "Health*"
ForEach ($Object in $Users)
{
    $NewUPN = $Object.UserPrincipalName.Replace("@ITler.de","@ITler.net")
    $Object | Set-ADUser -UserPrincipalName $NewUPN
}

Was macht das Ganze nun genau?
Zuerst packen wir in die Variable $Users alle AD-Benutzer die aktiviert sind und in einer bestimmten OU liegen. Wenn man die SearchBase einfach weg lässt fegt der Befehl halt einmal quer durchs AD. Also genau aufpassen, nicht dass ihr Konten erwischt, die ihr nicht bearbeiten wollt.
Nun filtern wir diese Rückgabe einmal nach Benutzern mit dem UPN-Suffix @ITler.net, da wir nur von diesen den Suffix ändern wollen.
Da in unserem Forest auch eine Exchange-Umgebung enthalten ist und ich an den HealthMailboxen nichts ändern möchte filtere ich diese im letzten Schritt einfach noch raus.
Natürlich könnte ich diese Filter noch beliebig erweitern mit allem was das CMDlet Get-ADUser so hergibt.

So nun starten wir eine Schleife die durch jedes Objekt in unserer Variablen läuft.
In jedem Schleifendurchgang baue ich mir in der Variable $NewUPN den neuen Benutzernamen zusammen in dem ich mir erstmal den UPN aus dem aktuellen Objekt hole und mit der Replace Funktion den String @ITler.de durch @ITler.net ersetzten lasse.
So jetzt hole ich mir noch das aktuelle Schleifenobjekt und übergebe es an das CMDlet Set-ADUser und setzte als UPN den Wert den wir uns in der Variablen $NewUPN zusammengeschraubt haben.

Effektiv 4 Zeilen zu tippen geht halt doch schneller als den Azubi für Wochen vor den Rechner zu ketten :)


Tags:

  • powershell ad benutzeranmeldename
  • upn powershell
  • UPN Script
  • powershell suffix ändern
  • powershell benutzeranmeldename

Ähnliche Artikel

3 Kommentare

  1. Hallo PotatoHead. Nein bei Siemens Healthcare bin ich nicht, aber hier bei mir hatte die Geschäftsführung nachträglich doch noch beschlossen alle bekommen .com und nicht nur die Standorte im Ausland :)

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"