답변:
Active Directory 사용자 및 컴퓨터가 선택한 기본 UPN 접미사를 변경하는 것으로 알려진 문서화 된 메커니즘은 없습니다. 이 도구는 포리스트의 "CN = Partitions, CN = Configuration, ..."에 지정된 도메인에 대해 "crossRef"개체에 정의 된 "canonicalName"특성의 첫 부분을 가져 오기 위해 연결되어 있다고 생각합니다.
AD 사용자와 컴퓨터는이 작업을 수행하기 위해 배선되어 있습니다. 다른 수단 (예 : "NET USER ... / add")을 사용하여 사용자 계정을 작성하면 계정에 userPrincipalName 속성이 지정되지 않습니다. 기본 UPN 접미사는 실제로 디렉터리 서비스 자체가 아니라 AD 사용자 및 컴퓨터의 기본값입니다.
프로그래밍 방식으로 기본 UPN 접미사를 얻는 방법 ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ) 을 보여주는 스크립트가 포함 된 Microsoft KB 기사를 실행해야하는 경우 , 스크립트에 몇 가지 구문 오류가 있음에주의하십시오 (17 및 32 행의 형식이 잘못되어 있고 32 행의 srrNamingContext가 strNamingContext 여야 함). 이 게시물의 끝에 약간의 개선 사항이있는 고정 버전을 포함하겠습니다 (추가 UPN 접미사가 정의 될 수있는 개별 OU의 이름을 보여줍니다).
나는 나보다 "알고있는"누군가에 의해 시정되기를 원하지만 AD 사용자와 컴퓨터가 다르게 행동하게하는 방법은보고 있지 않습니다.
' --- Get the naming contexts ----
Set RootDSE = GetObject("LDAP://RootDSE")
strNamingContext = RootDSE.Get("defaultNamingContext")
strConfigContext = RootDSE.Get("configurationNamingContext")
' -- Get the current domain name --
Set oDomain = GetObject("LDAP://" + strNamingContext)
strDomainName = oDomain.Get("name")
Set oPartition = GetObject("LDAP://CN=Partitions," & strConfigContext)
'-- Get the DNS name of the domain --
oDomain.GetInfoEx Array("canonicalName"), 0
strCanonical = oDomain.Get("canonicalName")
strDNSName = Left(strCanonical, Len(strCanonical) - 1) 'clip off "/"
'-- Display the default UPN suffix
wscript.echo strDNSName
'-- Get the defined upnSuffixes --
suffixes = oPartition.GetEx("UPNSuffixes")
For Each upnSuffix In suffixes
wscript.echo upnSuffix
Next
Set RootDSE = Nothing
Set oDomain =Nothing
Set oPartition = Nothing
' -- Get the upnsuffixes defined on organizational units --
Set ADOconn = CreateObject("ADODB.Connection")
Set ADOcom = CreateObject("ADODB.Command")
ADOconn.Provider = "ADsDSOObject"
bstrADOQueryString = "<LDAP://" + strNamingContext + ">;(objectcategory=organizationalUnit);upnsuffixes,ADsPath;subtree"
wscript.echo bstrADOQueryString
ADOconn.Open
ADOcom.ActiveConnection = ADOconn
ADOcom.CommandText = bstrADOQueryString
ADOcom.Properties("Page Size") = 99
Set objRS = ADOcom.Execute
While Not objRS.EOF
If Not IsNull(objRS.Fields("upnSuffixes")) Then
upnsuffixes = objRS.Fields("upnSuffixes")
For Each upnsuffix In upnsuffixes
wscript.echo objRS.Fields("adsPath") & " - Suffix: " & upnsuffix
Next
End If
objRS.MoveNext
Wend
Set objRS = Nothing
Set ADOcom = Nothing
Set ADOconn = Nothing
내가 아는 한이 작업을 수행 할 수 없습니다 (Evan의 답변은 4 년 후에도 여전히 유효합니다).
즉, 여러 클라이언트에서 몇 시간마다 작업 스케줄러에서 실행되는 스크립트를 작성했습니다. 특정 접미사 (대부분의 경우 기본값)를 검색하여 다른 접미사로 전환합니다. 스크립트는 내 블로그에 있지만 여기에도 게시합니다 :)
Import-Module ActiveDirectory
Get-ADUser -Filter {UserPrincipalName -like "*@ad.example.com"} -SearchBase "OU=SomeUserOu,DC=ad,DC=example,DC=com" |
ForEach-Object {
$UPN = $_.UserPrincipalName.Replace("ad.example.com","example.com")
Set-ADUser $_ -UserPrincipalName $UPN
}
이 경우 ad.example.com
UPN 접미사로 만든 사용자는 접미사로 업데이트 example.com
됩니다.
ADSIEDIT.MSC로 이동하여 OU 구조에 연결하고 OU (기본 구성)를 마우스 오른쪽 단추로 클릭 한 다음 OU 특성을 편집하여 허용 된 UPN 접미사를 설정할 수 있습니다. 편집 할 OU 특성은 UPNSuffixes입니다. 그러나 해당 OU 내에서 생성 된 사용자에게 할당 된 기본 UPN에는 영향을 미치지 않습니다. 원하는 UPN Suffix를이 목록에 추가하십시오. 다음으로 복사 할 템플릿 사용자를 만듭니다. OU를 마우스 오른쪽 단추로 클릭하고 템플릿으로 사용할 새 사용자를 만들고 올바른 UPN Suffix를 지정한 다음 생성 된 사용자를 마우스 오른쪽 단추로 클릭하고 계정을 비활성화합니다. 새 사용자를 만들려면 템플릿 사용자를 마우스 오른쪽 단추로 클릭하고 .. 복사를 클릭하십시오. 선택한 필드를 채우면 올바른 UPN으로 새 사용자가 작성됩니다. 다른 UPNS에 대해 여러 템플릿 사용자를 만듭니다. 또는 의심스러운 경우 powershell로 전환하십시오.
실제로 Powershell 용 Active Directory 모듈에서 실행할 수 있습니다. Set-ADOrganizationalUnit "OU = XXX, DC = Domain, DC = com"-Add @ {upnsuffixes = "@ UPNSuffix.com".
또는 -Filter 스위치와 함께 "Get-adorganizationalUnit"을 사용하고이를 'Set-ADOrganizationalUnit -Add @ {upnsuffixes = "@ UPNSuffix.com"'으로 파이프 할 수 있습니다.
꽤 오랫동안 찾은 후에 이것을 찾았으므로 이것이 누군가를 돕기를 바랍니다.
이 기술 문서에서는 도메인에서 UPN 접미사를 추가하거나 제거하는 방법에 대해 설명합니다.
http://technet.microsoft.com/en-us/library/cc756018(WS.10).aspx
여기에 대한 토론도 있습니다.
http://technet.microsoft.com/en-us/library/cc739093(WS.10).aspx
내가 이것을 할 필요가 없었기 때문에 개인적으로 그것을 보증 할 수는 없지만 한 가지가 떠 오릅니다. 이 작업을 수행하려는 경우 AD가 올바르게 작동하지만 타사 소프트웨어의 경우와 동일하지 않을 수 있으며 UPN 접미사가 항상 표준 소프트웨어라고 가정 할 수 있습니다. . 즉, 변경하기 전에 결과를 신중하게 고려하십시오.