この記事の内容

  • 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-MailboxSet-Mailbox はExchange Onlineの基本コマンドレットです
  • PowerShellの連番配列(1..100)と ForEach-Object を組み合わせることで、繰り返し作業を一行に近い形で自動化できます
  • 手作業では困難な規模のメールアドレス付与も、このスクリプトであれば数秒で完了します

GUIで1件ずつ操作するよりもはるかに効率的ですので、同様の要件がある場合はぜひ活用してみてください。