在 powershell 中重命名 AD 用户对象名称

Renaming AD user object name in powershell

我试图只获取用户类型的 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

为什么不使用 Get-ADUser 而不是 Get-ADObject 而只是 return DistinguishedName?显然,不要只是 运行 这段代码 :)

$users = (Get-ADUser -Filter *).DistinguishedName #This gets all the users in AD
Foreach($user in $users){
    Rename-ADObject -Identity $user -NewName $newUserObjectName
}

Computer objectClass 派生自 User objectClass。因此,对用户 class 的查询将 return 同时 ComputersUsers。如果只想过滤用户,则必须将 ObjectCategory 指定为 Person

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

用那个或者你可以用 goodole Get-ADuser

使用Get-ADUserSet-ADUser:

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

这会将所有用户的身份替换为 $newName

请注意,您可以将 -SamAccountName 替换为 ADUser 的任何其他 属性。例如,如果您想替换显示名称,您可以使用 -Name $newName