Notes:
PowerShell 統合機能を使用するには、ShareGate Migrate の Pro または Enterprise サブスクリプションが必要です。Essentials プランでは利用できません。
2026 年 1 月末に、Microsoft は IDCRL クッキーの非推奨化を開始しました。そのため、ほとんどの Microsoft 365 テナントでは、-Browser および -ModernAuth パラメーターを使用する Browser および Modern authentication 認証方法のみが機能します。詳細については、Microsoft 365 における「Other user」認証の重要な変更点をご覧ください。
PowerShell を使用すると、マッピング ファイルに基づいて複数の Microsoft 365 メールボックスをコピーできます。この方法では、メールボックスをバッチ単位で処理し、各バッチの完了後にレポートを出力できるため、大規模なメールボックス移行がより管理しやすくなります。
手順
メールボックスの移行には、マッピング ファイルと、そのファイルを読み込んでメールボックスをバッチ単位でコピーする PowerShell スクリプトが必要です。
マッピング ファイルを準備する
マッピング ファイルは、各ソース メールボックスと移行先メールボックスを対応付ける CSV ファイルです。移行を実行する前に用意しておくと、対応関係を確認して調整できます。
PowerShell を使用する場合
以下のスクリプトを実行すると、マッピング ファイルを自動的に生成できます。ShareGate Migrate は表示名でソースと移行先のメールボックスを照合します。
$source = Connect-MicrosoftOnline
$destination = Connect-MicrosoftOnline
Export-MailboxMappings -SourceConnection $source -DestinationConnection $destination -Path "C:\MyMappings\"
"C:\MyMappings\" の部分は、マッピング ファイルを保存したいドライブ上のフォルダーに置き換えてください。使用可能なパラメーターについては、Export-MailboxMappings を参照してください。
移行先に一致するメールボックスがない場合、CSV では該当欄が空白のままになります。次に進む前にファイルを確認し、不足している対応関係を入力してください。
ShareGate Migrate から生成する場合
Copy mailboxes - Mappings の手順に従って操作を設定し、マッピング画面に進みます。
Export mappings アイコンをクリックします。
CSV ファイルを保存し、そのパスを控えておきます。
マッピング ファイルを用意したら、開いて対応関係を確認してください。移行を実行する前に、CSV を編集してソースと移行先の対応関係を追加、削除、調整できます。
スクリプトを作成する
以下のスクリプトを、任意の PowerShell アプリケーションにコピーして貼り付けます。$mappings と $csv の -Path の値を、前のセクションで保存したマッピング ファイルを指すように更新してください。
$sourceConnection = Connect-MicrosoftOnline
$destinationConnection = Connect-MicrosoftOnline
$options = New-MailboxCopyOptions -IncludeEmails
$mappings = Import-MailboxMappings -SourceConnection $sourceConnection -DestinationConnection $destinationConnection -Path "C:\MyMappings\SharegateMailboxesMapping.csv"
$csv = Import-Csv -Path "C:\MyMappings\SharegateMailboxesMapping.csv"
# Ensure $csv is treated as an array, even with a single mailbox
$csv = @($csv)
# Initialize the starting index and the batch size
$index = 0
$batchSize = 16
while ($index -lt $csv.Count) {
# Select the current batch
$guids = $csv | Select-Object -Skip $index -First $batchSize -ExpandProperty "Source user id"
# Fetch the mailboxes
$mailboxes = Get-Mailbox -Id $guids -Connection $sourceConnection -AllowMultiple
# Copy the mailboxes
$result = Copy-Mailbox -SourceConnection $sourceConnection -DestinationConnection $destinationConnection -CopyOptions $options -MappingSettings $mappings -Mailboxes $mailboxes
# Export the report
Export-Report -SessionId $result.SessionId
# Increment index for next batch
$index += $batchSize
}
お使いの環境で動作するようにスクリプトを調整してください。以下にいくつかのガイドラインを示します。
$sourceConnection と $destinationConnection: ソースと移行先の Microsoft 365 テナントに接続します。認証オプションについては、Connect-MicrosoftOnline を参照してください。
$options: コピーに含めるコンテンツを設定します。
-IncludeEmailsを、移行内容に合わせたオプションに置き換えてください。使用可能なパラメーターについては、New-MailboxCopyOptions を参照してください。$mappings と $csv: どちらも同じマッピング ファイルを指す必要があります。前のセクションで保存したファイルに合わせて、
-PathとImport-Csv -Pathを更新してください。$batchSize: バッチごとに処理するメールボックスの数です。まず 16 で試し、環境のパフォーマンスに応じて調整してください。
$guids: CSV から現在のバッチのソース ユーザー ID を抽出します。
$mailboxes: 現在のバッチのメールボックス オブジェクトを取得します。複数の ID を渡す場合は
-AllowMultipleパラメーターが必要です。詳細については、Get-Mailbox を参照してください。$result: コピー操作の結果を保持します。Export-Report で使用されるセッション ID もここに含まれます。
Export-Report: 各バッチの完了後に移行レポートを出力します。詳細については、Export-Report を参照してください。
スクリプトの調整とテストが完了したら、実行してください。
注意事項
-ModernAuthを使用する Modern authentication は、Microsoft 365 で最も安全な認証方法であり、多要素認証(MFA)が強制されていない場合は Username と Password の変数と組み合わせて使用できます。認証方法の詳細や、必要に応じて Browser authentication に切り替える方法については、Connect-MicrosoftOnline を参照してください。移行レポートはバッチごとに生成されます。スクリプトは Export-Report を使用して各バッチのレポートを自動的に出力します。
PowerShell を使用して移行をスケジュールし、業務時間外に実行することで、パフォーマンスを最適化できます。
増分移行を行うには、最初のコピーの後にスクリプトを再実行し、前回の実行以降に追加または変更された項目のみを同期します。
バッチ サイズ: 適切なバッチ サイズは、メールボックスのサイズやネットワークの状態によって異なります。まず 16 で試し、パフォーマンスに応じて調整してください。バッチを小さくしておくと、問題が発生した際の監視やトラブルシューティングが容易になります。
スクリプトのエラーとテスト: 全環境で実行する前に、少数のメールボックスでスクリプトをテストしてください。テストを行うことで、多数のユーザーに影響が及ぶ前に潜在的な問題を特定できます。
この記事は人工知能を使用して翻訳されました。疑問がある場合は、元の英語版をご確認ください。
