Windows-Server-2003

Active Directory 使用者名:為什麼規範名稱會有所不同?我可以做點什麼讓它們統一嗎?

  • February 18, 2014

我是一個自學成才的 Active Directory 網路管理員,該網路用於在大約 30 台 PC 上進行 Windows 登錄。我從沒有任何直接 Microsoft 培訓的其他人那裡繼承了該系統,因此我對一些事情一無所知。

網路本身有一台 Windows Server 2008 R2 機器充當域控制器、DNS、文件共享等。登錄工作正常,但我在禁用舊帳戶的同時瀏覽使用者列表,我注意到一些我不太明白的事情.

以下是幾個範例使用者帳戶:

  1. 登錄名稱:john

名字:John

姓氏:Smith

顯示名稱:John Smith

對象的規範名稱:domain.com/Users/john 2. 登錄名稱:bob

名字:Bob

姓氏:French

顯示名稱:Bob French

對象的規範名稱:domain.com/Users/Bob French

目前域控制器是從另一個用於執行 Windows Server 2003 的域控制器換入的。第一個範例帳戶是在 Server 2003 機器為 DC 時創建的,第二個範例帳戶是在較新的 Server 2008 R2 機器為 DC 時創建的。為什麼規範名稱不同,它有什麼不同嗎?

我最惱火的是,我在活動目錄瀏覽器中的使用者列表有一半的帳戶是“名字”,一半是“名字姓氏”。

我可以在不破壞工作帳戶的情況下做一些事情來使所有這些都相同嗎?

Active Directory 並不真正關心使用者帳戶對象的 RDN(規範名稱的最後一部分)如何與顯示名稱或登錄名稱等其他屬性相關 - 只要每個單獨屬性的值不違反架構定義。

在 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 中的所有使用者帳戶並將它們拖放到另一個位置。

引用自:https://serverfault.com/questions/576497