Назад | Перейти на главную страницу

Переименовать displayName и CN из givenName и surName с помощью Powershell?

Мне нужно примирить 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"
}

Предостережения:

  1. я Trim()в givenName и surName удалить начальные / конечные пробелы. Мы фиксируем эти два обратно в учетной записи, а также исправляем displayName и cn.
  2. Сфера вашего -Filter в Get-ADUser чтобы собрать только тех пользователей, которых вы хотите. В * схватит все в домене, включая встроенные модули, администраторов и т. д. Это, вероятно, не то, что вам нужно. :)
  3. В Where-Object часть foreach будет пропускать пользовательские объекты, не имеющие одновременно givenName и surName атрибут.
  4. Если вам нужно поиграть с переименованным объектом пользователя, добавьте -PassThru до конца Rename-ADObject строка, и объект будет передан вам обратно.