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-Key: 650773

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

Printed on: April 20, 2024 at 00:04 o'clock

Member: emeriks
emeriks Feb 11, 2021 updated at 07:13:53 (UTC)
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.
Member: Woraxor
Woraxor Feb 11, 2021 at 07:22:57 (UTC)
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
Member: emeriks
emeriks Feb 11, 2021 updated at 07:38:22 (UTC)
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"}  
Member: Woraxor
Woraxor Feb 11, 2021 updated at 08:11:58 (UTC)
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"}  
}
Member: emeriks
Solution emeriks Feb 11, 2021 at 09:48:26 (UTC)
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"}  
}
Member: Woraxor
Woraxor Feb 11, 2021 updated at 10:20:24 (UTC)
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
Member: Woraxor
Woraxor Feb 11, 2021 updated at 10:52:02 (UTC)
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
Mitglied: 147323
Solution 147323 Feb 11, 2021 updated at 11:10:19 (UTC)
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.
Member: Woraxor
Woraxor Feb 11, 2021 at 11:44:13 (UTC)
Goto Top
Jetzt hat es geklappt, danke für eure Unterstützung face-smile

VG
Hanuta
Member: emeriks
emeriks Feb 11, 2021 at 12:42:55 (UTC)
Goto Top
Ach ja. Das war ja keine direkte Pipe ...