Мне нужно примирить displayName
и CN
атрибуты к givenName
и surName
поля в AD.
Можно ли взять givenName
и surName
и переименуйте оба displayName
и CN
используя Powershell?
Powershell отлично подходит для таких задач очистки.
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"
}
Предостережения:
Trim()
в givenName
и surName
удалить начальные / конечные пробелы. Мы фиксируем эти два обратно в учетной записи, а также исправляем displayName
и cn
.-Filter
в Get-ADUser
чтобы собрать только тех пользователей, которых вы хотите. В *
схватит все в домене, включая встроенные модули, администраторов и т. д. Это, вероятно, не то, что вам нужно. :)Where-Object
часть foreach
будет пропускать пользовательские объекты, не имеющие одновременно givenName
и surName
атрибут.-PassThru
до конца Rename-ADObject
строка, и объект будет передан вам обратно.