woraxor
Goto Top

UserPrincipalName mit Powershell anpassen

Hallo Zusammen,

ich müsste eine Änderung im AD vornehmen. Dies betrifft das Objekt "UserPrincipalName". Aktuell steht dort nur der Nachname @domäne des Benutzer drin. Aufgrund einer Umstellung soll nun Vorname.Nachname @domäne eingefügt werden.

Wie kann man dies am einfachsten mit Powershell umsetzen. Denn über 500 Accounts manuell abändern, dachte ich mir, es gibt bestimmt einen einfacheren Weg.

VG
Hanuta

Content-ID: 650773

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

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

emeriks
emeriks 11.02.2021 aktualisiert um 08:13:53 Uhr
Goto Top
Hi,
am Rande: UserPrincipalName ist kein Objekt sondern ein Attribut.

In etwa so:
Get-ADUser -filter 'givename -like "*" -and sn -like "*"' -properties givenname,sn | %{Set-ADUser -UserPrincipalName "$($_.givenname).$($_.sn)@domain.tld"}  
Unter der Voraussetzung, dass alle Kombinationen aus Vorname und Nachname bei Euch eindeutig sind. Sonst liefert er bei Dopplungen entsprechend Fehler.

E.
Woraxor
Woraxor 11.02.2021 um 08:22:57 Uhr
Goto Top
Hi Emeriks,

Danke dir für deine schnelle Hilfe. Leider bin ich in PS noch lvl Starter...

Das habe ich mir gerade auch gedacht, wie ich unser AD angeschaut habe, das dies nicht so wirklich gut gepflegt ist...
Mir ist aufgefallen, das die Attribute der Mailadresse aber sauber gepflegt worden sind. Dort haben wir genau das was ich benötige, also
"Vorname.Nachname@domain" wie ist im UPN stehen "sollte". Könnte man dies nicht mit einem Splitt ect. in das UPN Feld übertragen?

VG
Hanuta
emeriks
emeriks 11.02.2021 aktualisiert um 08:38:22 Uhr
Goto Top
Soll die Domain im UPN gleich der Domain in der Mail-Adresse sein?

Falls ja:
Get-ADUser -filter 'mail -like "*"' -properties mail | %{Set-ADUser -UserPrincipalName $_.mail}  

Falls nein:
Get-ADUser -filter 'mail -like "*"' -properties mail | %{Set-ADUser -UserPrincipalName "$($_.mail.Split("@"))@domain.tld"}  
Woraxor
Woraxor 11.02.2021 aktualisiert um 09:11:58 Uhr
Goto Top
Super, danke face-smile

wenn ich das ganze erstmal für eine OU testen möchte, kann ich den Skript folgendermaßen aufbauen?
würde dies funktionieren?


#auslesen der UNP Users
$Users=Get-ADUser -Filter * -SearchBase "OU=1,DC=domain,DC=tld"  

ForEach ($user in $Users){
Get-ADUser -filter 'givename -like "*" -and sn -like "*"' -properties givenname,sn | %{Set-ADUser -UserPrincipalName "$($_.givenname).$($_.sn)@domain.tld"}  
}
emeriks
Lösung emeriks 11.02.2021 um 10:48:26 Uhr
Goto Top
Get-ADUser -filter 'givename -like "*" -and sn -like "*"' -properties givenname,sn -SearchBase "OU=1,DC=domain,DC=tld" | %{Set-ADUser -UserPrincipalName "$($_.givenname).$($_.sn)@domain.tld"}  
}
Woraxor
Woraxor 11.02.2021 aktualisiert um 11:20:24 Uhr
Goto Top
HI Emeriks,

danke für die schnelle Antwort. Habe den Skript getestet. Die PS wirft mir keinen Fehler zurück, der Benutzeranmeldename ist leider aber auch noch Unverändert face-confused . Berechtigungen habe ich schon geprüft, die PS kann ohne Probleme im AD schreiben.

VG
Hanuta
Woraxor
Woraxor 11.02.2021 aktualisiert um 11:52:02 Uhr
Goto Top
Vertipper gefunden :D

nur möchte die PS jetzt beim Set-ADUser einen "Identity" Wert haben. Müsste er die nicht schon durch die Pipe mitbekommen?

VG
Hanuta
147323
Lösung 147323 11.02.2021 aktualisiert um 12:10:19 Uhr
Goto Top
Zitat von @Woraxor:
nur möchte die PS jetzt beim Set-ADUser einen "Identity" Wert haben. Müsste er die nicht schon durch die Pipe mitbekommen?
Da fehlt wie die Fehlermeldung ja schon richtig anmerkt der Identity Parameter bei Set-ADUser in der For-Schleife ...
Get-ADUser -filter 'givename -like "*" -and sn -like "*"' -properties givenname,sn -SearchBase "OU=1,DC=domain,DC=tld" | %{Set-ADUser $_.SamAccountName -UserPrincipalName "$($_.givenname).$($_.sn)@domain.tld"}  

Gruß j.
Woraxor
Woraxor 11.02.2021 um 12:44:13 Uhr
Goto Top
Jetzt hat es geklappt, danke für eure Unterstützung face-smile

VG
Hanuta
emeriks
emeriks 11.02.2021 um 13:42:55 Uhr
Goto Top
Ach ja. Das war ja keine direkte Pipe ...