Active Directoryで新しいユーザーを作成するためのデフォルトのUPNサフィックスを設定する


12

新しいユーザーにActive Directoryを作成するためのデフォルトのUPNサフィックスを設定する方法はありますか?

たとえば、ADドメインとしてcorp.mydomain.comがあり、Domains and Trustsに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時間以内に他の人が何もしなかったら、これを正しいとマークします。
アダムブランド

この場合、各ユーザーのUPNをチェックする毎日のスクリプトを実行し、標準の名前が付いていない場合は標準に変更します。このスクリプトは多くの属性を調べ、必要に応じてそれらを修正します。
KAPes

@KAPes:それはきちんとしたアイデアです。複数の委任されたAD管理者がユーザーアカウントを作成するサイトでは、通常、ほとんどのプロビジョニング作業を行うためのスクリプトを展開しました。それでも、LDAPクエリをスクリプト化して、「ちょっと、ダミー-これを間違ってプロビジョニングしました!」を生成するのを見ることができました。電子メール(または、明らかに、コンピューターが自動的にそれを行うのに十分な情報を持っているときに自動的に修正するため)。
エヴァンアンダーソン

エヴァンの答えはまだ正しいです。OUにuPNSuffixes属性を設定することを提案する人もいます。これは、ドメインに設定されたリストuPNSuffixesを単純にオーバーライドしますが、デフォルトではドメインのcanonicalNameにデフォルト設定されます。
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.comUPNサフィックスで作成されたユーザーは、サフィックスで更新されexample.comます。


ADの変更通知を使用してこの種のことをリアルタイムで行うことを考えましたが、それはばかげています。
エヴァンアンダーソン

1
UPNは、ADFS SSOのO365およびディレクトリ同期の要件によりますます重要になっています。あなたは今までに焼き付けられたものがあると思うだろう:)
MDMarra

マイクロソフトの製品を実際に使用しているのは私だけだと思う​​こともあります。> smile <数週間以内に最初のOffice365の実装を準備します(ハイブリッドオンサイト/オフサイトExchangeを含む完全な)ので、ADFS SSOとDirSyncの楽しみをすぐに体験できます足りる。
エヴァンアンダーソン

私はO365を直接行いません(スタッフには2人のコラボメンバーがいます)が、同じAzureテナントADを使用するIntuneの作業をいくつか行いました。あなたの最初の乗り心地が私のものよりもスムーズだったことを願っています:)
MDMarra

.Replaceでは大文字と小文字が区別されることに注意してください。したがって、UserPrincipalNameが「username@AD.Example.com」の場合、「ad.example.com」の文字列とは一致しません。。。$ UPN = $ _ UserPrincipalName.toLower()交換( "ad.example.com"、 "example.com"):これは、このような第一.toLower()メソッドを追加することができる
チャドRexin

0

許可されたUPNサフィックスを設定するには、ADSIEDIT.MSCに移動し、OU構造にプラグインし、OUを右クリックして(既定の構成で)、OU属性を編集します。編集するOU属性はUPNSuffixesです。ただし、これはそのOU内で作成されたユーザーに割り当てられたデフォルトのUPNには影響しません。目的のUPNサフィックスをこのリストに追加します。次に、コピーするテンプレートユーザーを作成します。OUを右クリックし、テンプレートとして使用する新しいユーザーを作成し、正しいUPNサフィックスを割り当て、作成したユーザーを右クリックしてアカウントを無効にします。新しいユーザーを作成するには、テンプレートユーザーを右クリックし、選択したフィールドにコピーして入力します。適切な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サフィックスを追加するのではなく、新しいユーザーを追加するためのデフォルトのサフィックスを設定することです。
オースティン

-4

このTechnetの記事では、ドメインでUPNサフィックスを追加または削除する方法について説明しています。

http://technet.microsoft.com/en-us/library/cc756018(WS.10).aspx

ここでそれについての議論もあります:

http://technet.microsoft.com/en-us/library/cc739093(WS.10).aspx

私はこれをする必要がなかったので、私は個人的にそれを保証することはできませんが、一つのことが頭に浮かびます。これを行う場合は、ADが正常に機能している間は、サードパーティのソフトウェアの場合は同じではない可能性があることに注意する必要があります。 。つまり、変更を加える前に結果を慎重に検討してください。


2
はい、UPNサフィックスを追加する方法を知っています。私の質問は、新しいユーザーを追加するためのデフォルトのサフィックスを設定することでした。
アダムブランド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.