【问题标题】:Renaming AD user object name in powershell在 powershell 中重命名 AD 用户对象名称
【发布时间】:2019-10-22 21:01:51
【问题描述】:

我正在尝试仅获取 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

【问题讨论】:

    标签: powershell active-directory powershell-2.0


    【解决方案1】:

    为什么不使用 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
    }
    

    【讨论】:

    • 当然,我知道,不要运行此代码,因为这会尝试为所有用户对象放置相同的对象名称:)。这就是想法,如何使用 Get-ADUser 检索所有用户,然后重命名使用 Rename-ADObject 找到的用户对象。
    【解决方案2】:

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

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

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

    【讨论】:

    • 我不知道计算机 objectClass 是从 User objectClass 派生的,所以谢谢。
    【解决方案3】:

    使用Get-ADUserSet-ADUser

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-30
      • 2017-03-27
      • 2019-10-15
      • 2020-04-19
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多