どうもミツシマです。

今日も今日とてOffice365を検証している日々が続いております。「今更かよっ」というつっこみはあるかもですが。。。汗
今回はOffice365で独自ドメインを設定した後、ユーザープリンシパル名(メールアドレス)を「~@~.onmicrosoft.com」から「~@testdomain.com」みたいな独自ドメインへ一括で変更するPowershellコマンドを検証してみました。


検証環境は以下の通り
PC:Windows10


とりあえず出来たスクリプトがこちら↓↓↓


〜ChangeUserPrincipalName.ps1〜

#ユーザープリンシパルネームの一括変更(独自ドメインへ)

#環境変数
$BeforeDomain = "@~.onmicrosoft.com"
$AfterDomain = "@testdomain.com"
$AdminUser = "admin@~.onmicrosoft.com"
$BeforeDomainCheck = "*" + $BeforeDomain

#AzureADへ接続
Connect-AzureAD

#全ユーザー情報取得
$Alluserinfo = Get-AzureADUser

foreach($userinfo in $Alluserinfo){

    If(($userinfo.UserPrincipalName -ne $AdminUser) -AND ($userinfo.UserPrincipalName -like $BeforeDomainCheck)){
        $strMessage = "ユーザー名:"+ $userinfo.UserPrincipalName + "/オブジェクトID:" + $userinfo.ObjectId
        Write-Output $strMessage

        [String]$NewUserPrincipalName = $userinfo.UserPrincipalName.Replace($BeforeDomain,$AfterDomain)
        Write-Output 新ユーザープリンシパル名:$NewUserPrincipalName
        Set-AzureADUser -ObjectId $userinfo.ObjectId -UserPrincipalName $NewUserPrincipalName
    }
}

#全ユーザー情報の再確認
Get-AzureADUser | Select-Object DisplayName,UserPrincipalName,UserType | Format-Table

pause


〜解説〜

今回も「AzureAD Powershell(Azure AD v2)」のコマンド体系を使用している。
その為、事前準備として「Install-Module -Name AzureAD」が必要。
※実際にコマンド実行前に「Connect-AzureAD」と入力して実行出来るか確認し、出来ればOK!!

コマンドの中身について。
環境変数で「~@~.onmicrosoft.com」と「~@testdomain.com」をそれぞれ定義している。
更に今回は「$AdminUser 」という変数で使用者を指定している。何となくだが、テナント管理者のIDは変更しないように除外する為に指定している。
これらの値を変更すれば汎用的に使用できるはずだ。

後は全ユーザー情報を取得し、それぞれ「管理者ではなく」かつ「~@~.onmicrosoft.com」というユーザーを取得して「Set-AzureADUser」で一括変更している。
※このコマンドのユーザー指定方法が「ObjectId」という所が若干使用しづらい印象だが、これは致し方ない気もする。。。


最後に実際に変更出来たかを確認するためにユーザー一覧を出力して終了
実行した画面がこちら↓↓↓

実行画面


無事検証出来たので今回は終了。
Office365を使用する初期から独自ドメインを運用しているのであれば今回の手順は不要ですが、途中からExchangeOnlineに移行する為に独自ドメインへ変更する場合には有効なコマンドだと思う。
(後は独自ドメインを変更する時にも使用できるかも!?!?)
スポンサードリンク