Переименование имени объекта пользователя AD в powershell - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь получить только объекты AD типа user, а затем перебрать все их и изменить имя объекта пользователя AD. Итак, я сделал ниже:

$Users = Get-ADObject -Filter {(ObjectClass -eq "user")} # OR Get-ADObject -Filter 'ObjectClass -eq "user"'

$Users | foreach
{
    # Here code to create name based on conditions ($newUserObjectName)
    Rename-ADObject -Identity $_ -NewName $newUserObjectName
}

Проблема в том, что Get-ADObject возвращает не только пользователей, но и компьютерные объекты .... Мне нужны только классы пользовательских объектов. Также я не уверен, что приведенная ниже строка кода верна, если для идентификатора установить значение $ _, чтобы обновить текущего пользователя в итерации:

Rename-ADObject -Identity $_ -NewName $newUserObjectName

Ответы [ 3 ]

2 голосов
/ 07 июня 2019

Computer objectClass является производным от User objectClass. Следовательно, запросы для пользовательского класса будут возвращать как Computers, так и Users. Если вы хотите фильтровать только для пользователей, вы должны указать ObjectCategory как Person

$Users = Get-ADObject -Filter {(Objectclass -eq "user") -and (objectCategory -eq "Person")}

Используйте это, или вы можете использовать гудоль Get-ADuser

2 голосов
/ 07 июня 2019

Почему бы не использовать Get-ADUser вместо Get-ADObject и просто вернуть DistinguishedName?Очевидно, НЕ просто запустить этот код :)

$users = (Get-ADUser -Filter *).DistinguishedName #This gets all the users in AD
Foreach($user in $users){
    Rename-ADObject -Identity $user -NewName $newUserObjectName
}
0 голосов
/ 07 июня 2019

Использовать Get-ADUser и Set-ADUser:

$Users = Get-ADUser -Filter *
$Users | foreach {
    # Naming code
    Set-ADUser -Identity $_.SamAccountName -SamAccountName $newName
}

Это заменяет все идентификаторы пользователя на $newName.

Обратите внимание, что вы можете заменить -SamAccountName любым другим свойствомADUser.например, если вы хотите заменить отображаемое имя, вы должны использовать -Name $newName

...