Active Directory用户名:规范名称为何有所不同?我可以做些什么使它们统一吗?


10

我是Active Active Directory网络的自学管理员,该网络用于在约30台PC上进行Windows登录。我从没有接受过任何直接Microsoft培训的其他人那里继承了该系统,因此,我在两件事上一无所知。

网络本身只有一台Windows Server 2008 R2计算机,可以充当域控制器,DNS,文件共享等。登录可以正常工作,但是我在禁用旧帐户的同时浏览用户列表,并且发现一些我不太了解的内容。

以下是几个示例用户帐户:

  1. 登录名:john
    名字:John
    姓氏:Smith
    显示名称:John Smith
    Canonical对象的名称:domain.com/Users/john

  2. 登录名:bob
    名:Bob
    姓:法语
    显示名:Bob法语
    规范对象名称:domain.com/Users/Bob法语

当前的域控制器已从另一个用于运行Windows Server 2003的域控制器换入。第一个示例帐户是在Server 2003框为DC时创建的,第二个示例帐户是在较新的Server 2008 R2框为DC时创建的。为什么“规范名称”不同,并且有什么不同?

我在活动目录浏览器中的用户列表中有一半的帐户为“姓氏”,一半的帐户为“名姓”,这使我大为恼火。

我可以做些什么使它们全部相同而又不会中断工作帐户吗?


您是否实际上将用户存储在domain.com/UsersOU中?还是仅仅是一个例子?
Mathias R. Jessen 2014年

是的-它们都在domain.com/Users/中,并带有多个安全组。这是不好的做法吗?我应该移动它们吗?我可以在不破坏一切的情况下移动它们吗?
罪魁祸首

2
除非您的外部应用程序使用简单绑定进行身份验证,否则,可以-您可以安全地移动它们-并且应该。它可以更好地控制组策略设备,以将其与知名的安全组分开。我也将更新答案以解决这一问题
Mathias R. Jessen

2
这取决于您的广告中有多少个对象以及您希望它们如何组织。通常,最好将它们放在OU中以更好地组织它们并将GPO应用于它们,并且最好的方法是保留默认容器(例如“用户”)。
Massimo 2014年

Answers:


8

只要每个属性的值不违反模式定义。

在Windows Server 2003和Windows Server 2008 R2之间,Active Directory用户和计算机中“新用户”表单的行为(以及许多其他对话)已发生了显着变化-这可能就是为什么它们不一致的原因

您可以使用PowerShell移动非系统帐户,然后遍历用户并将其重命名为他们的显示名称:

# Create new OU named RegularUsers
New-ADOrganizationalUnit -Name RegularUsers -Path "dc=domain,dc=com"

# Retrieve all users that are not critical system objects
$users = Get-ADUser -SearchBase "CN=Users,DC=domain,DC=com" -SearchScope OneLevel -Filter {-not(isCriticalSystemObject -like '*')}

# Go through each and move to the new OU
foreach($user in $users){
    Move-ADObject $user -TargetPath "OU=RegularUsers,DC=domain,DC=com"
}

# Retrieve all users in the new OU
$movedUsers = Get-ADUser -SearchBase "CN=Users,DC=domain,DC=com" -SearchScope OneLevel -Filter '*'

foreach($user in $movedUsers){
    # Test if Display Name and object Name is the same, if not - rename
    if($user.DisplayName -ne $user.Name)
    { 
        Rename-ADObject $user -NewName "$($user.DisplayName)" 
    }
}

对于第一步,您也可以只突出显示ADUC中的所有用户帐户,然后将它们拖放到另一个位置。


2

对象的CN / DN并不是全部相关,因为它仅由AD内部和LDAP查询使用。最终用户(和管理员)很少看到它。实际上,它在您移动对象时会自行更改,因为它包括对象的完整LDAP路径。

如果您想对其进行标准化,则可以做到没有任何副作用。用户真正关心的唯一是他们的登录名,只要您不更改,他们就将照常继续登录。

要对其进行更改,可以使用ADUC控制台,也可以使用PowerShell命令Rename-ADObject


2
我想说CN / DN在与应用程序集成方面很重要。通常找不到LDAP所在的AD集成。让您的CN / DN符合标准真是太好了。它看起来也更漂亮:)尽管有关如何实际更改它的重要信息。
史蒂夫·巴特勒

1

dsmove命令应该能够为你改变的规范名称。我已经在测试环境中完成了此操作,但从未在现场环境中完成过此操作,因此,我建议您谨慎行事。

另外,半关联的,我建议实施另一个域控制器,以免在您唯一的DC出现故障时造成麻烦。


如果域和林的功能级别在Server 2008 R2上,那么旧的Server 2003是否可以充当辅助DC,或者我们是否需要升级该计算机的OS?
罪s 2014年

2
除非域/林中的所有DC至少具有该OS版本,否则您不能将域/林功能级别提高到X版本。
Massimo 2014年

@evilspoons是的,您可以,但是正如massimo所说,它必须处于2003域级别。
史蒂夫·巴特勒

4
@SteveButler由于DFL / FFL 2008R2的还原级别不能超过2008年,因此“肯定”绝对不是答案
Mathias R. Jessen 2014年

好吧,所以我的选择是在2003年级别上重建域(不会发生)或将2003 Box升级到2008 R2(也可能不会发生,我的老板会花更多的钱在新计算机上而不是花钱玩一台机器)。旧的)。我会特别确保我们的备份是好的,以防万一某些东西死了……
罪魁祸首
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.