どうもミツシマです。

以前、「<Office365>Powershellコマンドでユーザープリンシパル名(メールアドレス)を独自ドメインに一括変更する方法を検証してみた」を検証してみましたが、今回はユーザーではなく作成したグループのドメインを一括で独自ドメインにする方法を検証してみました。


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


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


〜ChangeGroupMailDomain.ps1〜

#グループアドレス(ドメイン)の一括変更(独自ドメインへ)

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

#ExchangeOnlineへ接続するための認証情報登録
$UserCredential = Get-Credential

#接続(リモートセッションの作成)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection

###############################
#接続(リモートセッションの作成) プロキシ環境の場合

#ExchangeOnlineへ接続するための認証情報登録
#$UserCredential = Get-Credential

#接続(リモートセッションの作成)
#$proxyOptions = New-PSSessionOption -ProxyAccessType IEConfig -ProxyAuthentication Negotiate
#$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection -SessionOption $proxyOptions
###############################

#Exchange Onlineコマンドレットのインポート
Import-PSSession $Session | Out-Null

#全ユーザー情報取得(メールが有効なセキュリティ・配布リスト)
$AllGroupinfo = Get-DistributionGroup

foreach($Groupinfo in $AllGroupinfo){

    If($Groupinfo.PrimarySmtpAddress -like $BeforeDomainCheck){
        $strMessage = "グループ名:"+ $Groupinfo.DisplayName + "のメールドメインを変更します."
        Write-Output $strMessage

        [String]$GroupPrimarySmtpAddress = $Groupinfo.PrimarySmtpAddress.Replace($BeforeDomain,$AfterDomain)
        Write-Output 新グループメールアドレス:$GroupPrimarySmtpAddress
        Set-DistributionGroup -Identity $Groupinfo.DisplayName -PrimarySmtpAddress $GroupPrimarySmtpAddress
    }
}

#全ユーザー情報取得(Office365グループ)
$AllGroupinfo = Get-UnifiedGroup

foreach($Groupinfo in $AllGroupinfo){

    If($Groupinfo.PrimarySmtpAddress -like $BeforeDomainCheck){
        $strMessage = "グループ名:"+ $Groupinfo.DisplayName + "のメールドメインを変更します."
        Write-Output $strMessage

        [String]$GroupPrimarySmtpAddress = $Groupinfo.PrimarySmtpAddress.Replace($BeforeDomain,$AfterDomain)
        Write-Output 新グループメールアドレス:$GroupPrimarySmtpAddress
        Set-UnifiedGroup -Identity $Groupinfo.DisplayName -PrimarySmtpAddress $GroupPrimarySmtpAddress
    }
}


#全ユーザー情報の再確認
Get-DistributionGroup | Select-Object DisplayName,GroupType,PrimarySmtpAddress | Format-Table
Get-UnifiedGroup | Select-Object DisplayName,GroupType,PrimarySmtpAddress | Format-Table

#セッション終了
Remove-PSSession $Session

pause


〜解説〜

今回メールアドレスがあるグループのドメイン名を一括変更するということで、ExchangeOnlineの操作コマンドを使用しています。
(その為、毎回コマンドのインポートが必要ですが致し方なし!!)
そして、実際の変更するコマンドは「Set-DistributionGroup」と「Set-UnifiedGroup」コマンドを使用して変更しています。
※実際に変更する際には、1度上記コマンド行はコメントアウトして、ちゃんとドメインが設定されるかを確認することをオススメします。

本当であれば1つのコマンドで済めば良いのだが、「Office365グループ」という後から出来たグループを操作するためのコマンドが違うのですよ。。。orz


で、コマンドの中身について。
環境変数で「~@~.onmicrosoft.com」と「~@testdomain.com」をそれぞれ定義しています。
ここの値を実環境に変更してもらえばOK!!
ここで注意点が1点!!
コマンドを実行する環境がプロキシサーバ配下の環境の場合には、「#接続(リモートセッションの作成) プロキシ環境の場合」のコマンドを使用して下さい!!
(コマンド例ではコメントアウトさせています。)


最後に実際に変更されているかを確認するためにグループ一覧を出力しています。
実行した画面がこちら↓↓↓
実行結果2


今回も無事検証出来たのでこれで終了(^o^)

スポンサードリンク