Powershell glänzt wirklich für solche Aufräumarbeiten.
Import-Module ActiveDirectory
$allUsers = Get-ADUser -Filter * -Properties cn,displayName
foreach ( $u in $allUsers | Where-Object { ($_.givenName) -and ($_.surName) } ) {
$fn = $u.givenName.Trim()
$ln = $u.surName.Trim()
Write-Host $fn $ln
Set-ADUser -Identity $u -DisplayName "$fn $ln" -GivenName "$fn" -SurName "$ln" -PassThru |
Rename-ADObject -NewName "$fn $ln"
}
Vorsichtsmaßnahmen:
- Ich bin
Trim()
das givenName
und surName
, um führende / nachfolgende Leerzeichen zu entfernen. Wir verpflichten diese beiden zurück auf das Konto sowie zu korrigieren displayName
und cn
.
- Scope your
-Filter
in, Get-ADUser
um nur die gewünschten Benutzer zu sammeln. Das *
wird jeden in der Domain packen , einschließlich eingebauter, Admins usw. Dies ist wahrscheinlich nicht das, was Sie wollen. :) :)
- Der
Where-Object
Teil von foreach
überspringt Benutzerobjekte, die nicht sowohl ein givenName
als auch ein surName
Attribut haben.
- Wenn Sie mit dem umbenannten Benutzerobjekt spielen müssen, fügen Sie
-PassThru
am Ende der Rename-ADObject
Zeile ein hinzu, und das Objekt wird an Sie zurückgegeben.