この記事の内容
- Microsoft 365管理センターのCloudShellからPowerShellを使ってExchange Onlineに接続する方法を解説します
Get-Mailboxコマンドでメールボックス情報を取得し、EmailAddressesプロパティを確認する手順を紹介しますSet-Mailboxを使って1件ずつメールアドレスを付与する基本操作を説明します- PowerShellの配列とループ(
ForEach-Object)を活用して、大量のメールアドレスを一括付与する方法を解説します - 手作業では困難な100件規模の一括操作を自動化するテクニックを紹介します
はじめに
M365の管理作業では、テスト目的や特定の要件により、1人のユーザーに対して多数のメールアドレスを付与したいケースがあります。Exchange管理センターのGUIからひとつひとつ追加するのは非常に手間がかかります。
今回はMicrosoft 365管理センターのCloudShell上でPowerShellを使い、ユーザーへのメールアドレス一括付与を自動化する方法を紹介します。
前提
- Microsoft 365管理センターへの管理者アクセス権限があること
- Exchange管理者またはグローバル管理者のロールが付与されていること
CloudShellを開く
まずMicrosoft 365管理センター(admin.microsoft.com)を開きます。画面上部にCloudShellのアイコンがありますので、クリックしてシェルを起動します。PowerShellモードで起動することを確認してください。
CloudShell上ではブラウザから直接PowerShellが実行できるため、ローカルへのモジュールインストールが不要で非常に便利です。
Exchange Onlineに接続する
CloudShell上でExchange Onlineに接続するには、ExchangeOnlineManagement モジュールをインポートしてから Connect-ExchangeOnline を実行します。
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com
接続が完了すると、Exchange Onlineのコマンドレットが使用できるようになります。
現在のメールボックス情報を確認する
対象ユーザーのメールボックス情報を確認するには Get-Mailbox を使います。
Get-Mailbox -Identity "user@yourdomain.com"
現在設定されているメールアドレスの一覧は EmailAddresses プロパティで確認できます。
(Get-Mailbox -Identity "user@yourdomain.com").EmailAddresses
1件ずつメールアドレスを付与する
Set-Mailbox コマンドレットを使うと、特定のユーザーにメールアドレスを追加できます。
Set-Mailbox -Identity "user@yourdomain.com" -EmailAddresses @{Add="alias01@yourdomain.com"}
ただし、数十件・数百件のアドレスを付与する場合は、この方法を繰り返すのは現実的ではありません。
PowerShellで大量のメールアドレスを一括付与する
ここからが本題です。PowerShellの配列とパイプラインを活用することで、番号付きのメールアドレスを一括で付与できます。
配列で連番を作成する
PowerShellでは .. 演算子を使って連番の配列を簡単に作成できます。
$numbers = 1..100
これで1から100までの数値が $numbers に格納されます。
ForEach-Objectでループ処理する
この配列をパイプして ForEach-Object でひとつひとつ処理します。$_ には現在の番号が入ります。
1..100 | ForEach-Object {
$address = "alias$_@yourdomain.com"
Set-Mailbox -Identity "user@yourdomain.com" -EmailAddresses @{Add=$address}
}
このスクリプトを実行すると、alias1@yourdomain.com から alias100@yourdomain.com まで100件のメールアドレスが自動的に付与されます。
途中から追加する場合
すでに一部のアドレスが付与済みで、続きから追加したい場合は開始番号を変更するだけです。
101..200 | ForEach-Object {
$address = "alias$_@yourdomain.com"
Set-Mailbox -Identity "user@yourdomain.com" -EmailAddresses @{Add=$address}
}
追加後の確認
付与が完了したら、改めて EmailAddresses プロパティで正しく追加されているか確認します。
(Get-Mailbox -Identity "user@yourdomain.com").EmailAddresses
一覧に番号付きのアドレスが追加されていることを確認できます。
まとめ
今回はMicrosoft 365管理センターのCloudShell上でPowerShellを使い、ユーザーに大量のメールアドレスを一括付与する方法を紹介しました。
- CloudShellはブラウザから直接PowerShellを実行できるため、環境構築なしにExchange Online管理が行えます
Get-MailboxとSet-MailboxはExchange Onlineの基本コマンドレットです- PowerShellの連番配列(
1..100)とForEach-Objectを組み合わせることで、繰り返し作業を一行に近い形で自動化できます - 手作業では困難な規模のメールアドレス付与も、このスクリプトであれば数秒で完了します
GUIで1件ずつ操作するよりもはるかに効率的ですので、同様の要件がある場合はぜひ活用してみてください。