Office 365のシングルサインオン用にUPNをPowerShellから変更

皆さんこんにちは。国井です。
300回目の投稿となる今回は、Active DirectoryユーザーのUPNサフィックスをPowerShellから変更する方法についてです。

Office365のシングルサインオンを行う場合、Alternate Login IDを使う場合を除いて、Active Directoryユーザーのユーザープリンシパル名(UPN)を変更し、ディレクトリ同期を行う必要があります。
UPNの変更はActive Directoryドメインと信頼関係からOffice365で使用するドメイン名を登録すること、

image

そして、UPNの変更をユーザーごとに行う必要があります。

image

ただし、UPNの変更はユーザーごとに行う必要があるため、従業員規模で1000名を超えてくるようなケースでは、とんでもなく面倒な作業になります。(100ユーザー分でも十分面倒ですが。。)

そこで、PowerShellからまとめてUPNを変更するスクリプトを作成してみました。
(example.comは現在お使いのActive Directoryドメイン名、xxxxxx.jpはOffice365に登録のドメイン名に置き換えてください)

Get-ADUser –Filter {UserPrincipalName –like “*@example.com”} `
–SearchBase “DC=example,DC=com” | ForEach-Object {
$UPN = $_.UserPrincipalName.Replace(“example.com”, “xxxxxx.jp”)
Set-ADUser $_ -UserPrincipalName $UPN
}

Active Directory ドメインコントローラーから実行すれば、まとめて変更できます。
私の環境で実行してみたところ、
Get-ADUserコマンドレットを実行してユーザー一覧を出したときに、example.comとExample.comのように大文字と小文字が混在しているとReplaceメソッドが識別してくれないケースがあるので、その点だけ利用時に注意してください。

よかったら、お使いください。