我尝试只获取user类型的AD对象,然后遍历所有这些对象并更改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
发布于 2019-06-07 18:54:40
为什么不使用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
}
发布于 2019-06-07 19:00:46
Computer
objectClass派生自User
objectClass。因此,对user类的查询将同时返回Computers
和Users
。如果要仅过滤用户,则必须将ObjectCategory
指定为Person
$Users = Get-ADObject -Filter {(Objectclass -eq "user") -and (objectCategory -eq "Person")}
使用它或者你可以使用goodole Get-ADuser
发布于 2019-06-08 01:41:07
使用Get-ADUser
和Set-ADUser
$Users = Get-ADUser -Filter *
$Users | foreach {
# Naming code
Set-ADUser -Identity $_.SamAccountName -SamAccountName $newName
}
这会将所有用户的身份替换为$newName
。
注您可以用ADUser
的任何其他属性替换-SamAccountName
。例如,如果要替换显示名称,则应使用-Name $newName
https://stackoverflow.com/questions/56492883
复制相似问题