ตั้งค่าเริ่มต้นส่วนต่อท้าย UPN สำหรับการสร้างผู้ใช้ใหม่ใน Active Directory


12

มีวิธีการตั้งค่าส่วนต่อท้าย UPN เริ่มต้นสำหรับการสร้างผู้ใช้ใหม่เป็น Active Directory หรือไม่?

ตัวอย่างเช่นหากฉันมี corp.mydomain.com เป็นโดเมนโฆษณาของฉันและฉันได้เพิ่มคำต่อท้าย UPN สำรองไว้ใน Domains and Trusts ที่เป็นเพียง mydomain.com จะมีวิธีใดที่จะให้โดเมนนั้นเป็นค่าเริ่มต้นเมื่อสร้างใหม่ ผู้ใช้?

ฉันรู้ว่าฉันสามารถสร้างผู้ใช้แม่แบบและจากนั้นเมื่อฉันคัดลอกมันจะมีคำต่อท้ายเริ่มต้นที่ถูกต้อง แต่เพียงอยากรู้ว่ามีการตั้งค่าที่ซ่อนอยู่ซึ่งจะควบคุมสิ่งนี้หรือไม่

คำตอบ:


8

ไม่มีกลไกที่ทำเป็นเอกสารที่ฉันรู้ว่าจะเปลี่ยนส่วนต่อท้าย UPN เริ่มต้นที่เลือกโดยผู้ใช้ของไดเรกทอรีที่ใช้งานอยู่และคอมพิวเตอร์ ฉันเชื่อว่าเครื่องมือนี้ใช้สายแบบหนักเพื่อใช้ส่วนแรกของแอตทริบิวต์ "canonicalName" ที่กำหนดไว้ในวัตถุ "crossRef" สำหรับโดเมนที่ระบุใน "CN = พาร์ติชัน CN = การกำหนดค่า ... " ในฟอเรสต์ของคุณ

ผู้ใช้ AD และคอมพิวเตอร์เพิ่งจะมีสายแข็งในการทำเช่นนี้ หากคุณสร้างบัญชีผู้ใช้โดยใช้วิธีการอื่น ("NET USER ... / add" เป็นต้น) จะไม่มีการกำหนดแอตทริบิวต์ userPrincipalName ให้กับบัญชี ส่วนต่อท้าย UPN เริ่มต้นเป็นเพียงค่าเริ่มต้นในผู้ใช้ AD และคอมพิวเตอร์ไม่ใช่ค่าเริ่มต้นของบริการไดเรกทอรี

หากคุณพบบทความ Microsoft KB ที่มีสคริปต์อยู่ในนั้นจะแสดงวิธีรับโปรแกรมต่อท้าย UPN เริ่มต้นโดยทางโปรแกรม ( http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269441 ) ระวังว่าสคริปต์มีข้อผิดพลาดทางไวยากรณ์อยู่สองสามข้อ (บรรทัดที่ 17 และ 32 มีรูปแบบไม่ถูกต้องและ srrNamingContext บนบรรทัดที่ 32 ควรเป็น strNamingContext) ฉันจะรวมเวอร์ชันที่แก้ไขแล้วพร้อมการปรับปรุงเล็กน้อยในตอนท้ายของโพสต์นี้ (มันจะแสดงชื่อของแต่ละ OU ที่อาจมีการกำหนดส่วนต่อท้าย UPN เพิ่มเติม)

ฉันชอบที่จะได้รับการแก้ไขโดยใครบางคน "รู้" มากกว่าฉัน แต่ฉันไม่เห็นวิธีใด ๆ ที่จะทำให้ผู้ใช้ 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

คำตอบของ Evan ยังคงถูกต้อง บางคนยังแนะนำให้ตั้งค่าแอตทริบิวต์ uPNSuffixes บน OU สิ่งนี้จะแทนที่รายการ uPNSuffixes ที่ตั้งค่าบนโดเมน แต่จะยังคงเป็นค่าเริ่มต้นเป็นชื่อมาตรฐานของโดเมน
charleswj81

8

สิ่งนี้ไม่สามารถทำได้เท่าที่ฉันรู้ (คำตอบของอีวานยังคงเป็นจริง 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คำต่อท้าย


ฉันต้องคิดเกี่ยวกับการใช้การแจ้งเตือนการเปลี่ยนแปลงโฆษณาเพื่อทำสิ่งนี้ในแบบเรียลไทม์
Evan Anderson

1
UPN กำลังทวีความสำคัญมากขึ้นเรื่อย ๆ กับ O365 และข้อกำหนด dirsync สำหรับ ADFS SSO คุณคิดว่าตอนนี้จะมีบางสิ่งบางอย่างอบ :)
MDMarra

บางครั้งฉันคิดว่าฉันเป็นคนเดียวที่ใช้ผลิตภัณฑ์ของ Microsoft อย่างแท้จริง > ยิ้ม <ฉันพร้อมที่จะทำการติดตั้ง Office365 ครั้งแรกของฉันในอีกไม่กี่สัปดาห์ข้างหน้า (แลกเปลี่ยน w / ไฮบริดแบบครบวงจรบนเว็บไซต์ / นอกสถานที่) ดังนั้นฉันจะได้สัมผัสกับ ADFS SSO และ DirSync ทั้งหมดในไม่ช้า พอ.
Evan Anderson

ฉันไม่ได้ทำ O365 โดยตรง (เรามีพนักงานร่วมกันสองคน) แต่ฉันทำงาน Intune ที่ใช้โฆษณา Azure tenant เดียวกัน ฉันหวังว่าการขี่ครั้งแรกของคุณจะราบรื่นกว่าของฉัน :)
MDMarra

การเพิ่มบันทึกย่อว่า. REPARTS นั้นจะตรงตามตัวพิมพ์ใหญ่และตัวพิมพ์เล็กดังนั้นหาก UserPrincipalName คือ "username@AD.Example.com" จะไม่ตรงกับสตริงของ "ad.example.com" นี่สามารถเพิ่มวิธีการ. toLower () ก่อนดังนี้: $ UPN = $ _. UserPrincipalName.toLower () แทนที่ ("ad.example.com", "example.com")
Chad Rexin

0

คุณสามารถตั้งค่าส่วนต่อท้าย UPN ที่ได้รับอนุญาตโดยไปที่ ADSIEDIT.MSC ให้เสียบลงไปที่โครงสร้าง OU คลิกขวาที่ OU (ในการกำหนดค่าเริ่มต้น) และแก้ไขคุณสมบัติ OU แอตทริบิวต์ OU ที่จะแก้ไขคือ UPNSuffixes สิ่งนี้ไม่มีผลกระทบอย่างไรก็ตาม UPN เริ่มต้นที่กำหนดให้กับผู้ใช้ที่สร้างขึ้นภายใน OU นั้น เพิ่มส่วนต่อท้าย UPN ที่ต้องการลงในรายการนี้ จากนั้นสร้างผู้ใช้แม่แบบเพื่อคัดลอก คลิกขวาที่ OU สร้างผู้ใช้ใหม่เพื่อใช้เป็นแม่แบบกำหนดคำต่อท้าย UPN ที่ถูกต้องจากนั้นคลิกขวาที่ผู้ใช้เมื่อสร้างและปิดใช้งานบัญชี ในการสร้างผู้ใช้ใหม่ให้คลิกขวาที่ผู้ใช้แม่แบบและคัดลอก .. กรอกข้อมูลในฟิลด์ที่เลือกและผู้ใช้ใหม่จะถูกสร้างขึ้นด้วย UPN ที่เหมาะสม สร้างผู้ใช้แม่แบบหลายรายการสำหรับ UPNS ที่แตกต่างกัน หรือหากมีข้อสงสัยให้เปลี่ยนไปใช้ PowerShell


-3

ที่จริงแล้วคุณสามารถเรียกใช้ใน Active Directory Module สำหรับ Powershell: Set-ADOrganizationalUnit "OU = XXX, DC = โดเมน, DC = com" - เพิ่ม @ {upnsuffixes = "@ UPNSuffix.com"

หรือคุณสามารถใช้ "Get-adorganizationalUnit" พร้อมสวิตช์ - ตัวกรองและไพพ์ที่เป็น 'Set-ADOrganizationalUnit - เพิ่ม @ {upnsuffixes = "@ UPNSuffix.com"'

ฉันพบสิ่งนี้หลังจากที่ค้นหามาระยะหนึ่งแล้วดังนั้นฉันหวังว่านี่จะช่วยทุกคน


คำถามคือเกี่ยวกับการตั้งค่าส่วนต่อท้ายเริ่มต้นสำหรับการเพิ่มผู้ใช้ใหม่ไม่เพิ่มส่วนต่อท้ายขึ้น
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

ฉันไม่สามารถรับรองได้เป็นการส่วนตัวเพราะฉันไม่เคยทำแบบนี้มาก่อน หากคุณกำลังจะทำสิ่งนี้คุณจะต้องจำไว้ว่าในขณะที่โฆษณาทำงานได้อย่างถูกต้องอาจจะไม่เหมือนกันสำหรับซอฟต์แวร์ของบุคคลที่สามที่คุณมีซึ่งอาจสันนิษฐานได้ว่าคำต่อท้าย UPN นั้นเป็นมาตรฐาน . พิจารณาผลที่ตามมาอย่างรอบคอบก่อนทำการเปลี่ยนแปลงอีกนัยหนึ่ง


2
ใช่ฉันรู้วิธีเพิ่มส่วนต่อท้าย UPN คำถามของฉันคือการตั้งค่าคำต่อท้ายเริ่มต้นสำหรับการเพิ่มผู้ใช้ใหม่
Adam Brand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.