Active Directory에서 새 사용자를 만들기위한 기본 UPN 접미사 설정


12

새 사용자에게 Active Directory를 만들기위한 기본 UPN 접미사를 설정하는 방법이 있습니까?

예를 들어 corp.mydomain.com을 내 AD 도메인으로 사용하고 도메인 및 트러스트 아래에 mydomain.com 인 대체 UPN 접미사를 추가 한 경우 새 도메인을 만들 때 해당 도메인을 기본값으로 설정하는 방법이 있습니까? 사용자?

템플릿 사용자를 만들 수 있으며 복사 할 때 올바른 기본 접미사가 있지만이를 제어하는 ​​숨겨진 설정이 있는지 궁금합니다.

답변:


8

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

레지스트리 항목이나 무언가가 있기를 바랐습니다. 다음 24 시간 내에 다른 사람이없는 경우에는 이것을 올바른 것으로 표시하겠습니다.
Adam Brand

우리의 경우 각 사용자의 UPN을 확인하는 일일 스크립트를 실행하고 표준 이름이없는 경우 표준으로 변경합니다. 이 스크립트는 많은 속성을보고 필요한 경우 수정합니다.
KAPes

@KAPes : 깔끔한 아이디어입니다. 여러 대의 AD 관리자가 사용자 계정을 만드는 사이트에서 일반적으로 대부분의 프로비저닝 작업을 수행하는 스크립트를 배포했습니다. 그래도 LDAP 쿼리를 스크립팅하여 "이봐, 더미-당신은 이것을 잘못 프로비저닝했다!" 이메일 (또는 컴퓨터가 자동으로 수행하기에 충분한 정보를 가지고있을 때 자동으로 수정하기 위해).
Evan Anderson

에반의 대답은 여전히 ​​옳습니다. 일부는 또한 OU에서 uPNSuffixes 속성 설정을 제안했습니다. 이것은 단순히 도메인에 설정된 uPNSuffixes 목록을 무시하지만 여전히 도메인의 canonicalName으로 기본 설정됩니다.
charleswj81

8

내가 아는 한이 작업을 수행 할 수 없습니다 (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.comUPN 접미사로 만든 사용자는 접미사로 업데이트 example.com됩니다.


이런 종류의 작업을 실시간으로 수행하기 위해 AD 변경 알림을 사용하는 것에 대해 생각해야했지만 어리석은 지나칠 것입니다.
Evan Anderson

1
UPN은 ADFS SSO에 대한 O365 및 dirsync 요구 사항으로 점점 더 중요 해지고 있습니다. 당신은 지금까지 구운 것들이 있다고 생각할 것입니다 :)
MDMarra

때때로 저는 실제로 Microsoft 제품을 사용 하는 유일한 사람이라고 생각 합니다. > smile <다음 몇 주 안에 첫 번째 Office365 구현을 준비하고 있습니다 (하이브리드 온 사이트 / 오프 사이트 Exchange 포함). ADFS SSO 및 DirSync의 모든 재미를 곧 경험하게 될 것입니다. 충분히.
Evan Anderson

O365를 직접 수행하지는 않지만 (직원이 몇 명인 콜랩 직원이 있음) 동일한 Azure 테넌트 AD를 사용하는 Intune 작업을 수행했습니다. 나는 당신의 첫 번째 승차가 나의 것보다 더 매끄
럽기를 바랍니다

.Replace는 대소 문자를 구분한다는 점을 추가하면 UserPrincipalName이 "username@AD.Example.com"이면 "ad.example.com"문자열과 일치하지 않습니다. .. $ UPN = $ _ UserPrincipalName.toLower () 교체 ( "ad.example.com", "example.com") :이 이렇게 먼저 .toLower () 메소드를 추가 할 수 있습니다
차드 Rexin

0

ADSIEDIT.MSC로 이동하여 OU 구조에 연결하고 OU (기본 구성)를 마우스 오른쪽 단추로 클릭 한 다음 OU 특성을 편집하여 허용 된 UPN 접미사를 설정할 수 있습니다. 편집 할 OU 특성은 UPNSuffixes입니다. 그러나 해당 OU 내에서 생성 된 사용자에게 할당 된 기본 UPN에는 영향을 미치지 않습니다. 원하는 UPN Suffix를이 목록에 추가하십시오. 다음으로 복사 할 템플릿 사용자를 만듭니다. OU를 마우스 오른쪽 단추로 클릭하고 템플릿으로 사용할 새 사용자를 만들고 올바른 UPN Suffix를 지정한 다음 생성 된 사용자를 마우스 오른쪽 단추로 클릭하고 계정을 비활성화합니다. 새 사용자를 만들려면 템플릿 사용자를 마우스 오른쪽 단추로 클릭하고 .. 복사를 클릭하십시오. 선택한 필드를 채우면 올바른 UPN으로 새 사용자가 작성됩니다. 다른 UPNS에 대해 여러 템플릿 사용자를 만듭니다. 또는 의심스러운 경우 powershell로 전환하십시오.


-3

실제로 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 접미사를 추가하지 않고 새 사용자를 추가하기위한 기본 접미사를 설정하는 것입니다.
Austinian

-4

이 기술 문서에서는 도메인에서 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 접미사가 항상 표준 소프트웨어라고 가정 할 수 있습니다. . 즉, 변경하기 전에 결과를 신중하게 고려하십시오.


2
예, UPN 접미사를 추가하는 방법을 알고 있습니다. 내 질문은 새로운 사용자를 추가하기위한 기본 접미사를 설정하는 것이 었습니다.
Adam Brand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.