メインコンテンツにスキップ

PowerShellを使用してOneDrive for BusinessからOneDrive for Businessへ移行する

注: PowerShellとの連携には、ShareGate MigrateのProまたはEnterpriseサブスクリプションが必要です。Essentialsプランでは利用できません。

PowerShellを使用して、OneDrive for BusinessからOneDrive for Businessへの移行を自動化できます。

ヒント: ドキュメントを新しいOneDriveフォルダーに移行する方法については、「手順: PowerShellで新しいOneDriveフォルダーへ移行する」を参照してください。

注: Microsoftは2026年1月末から、IDCRLクッキーの段階的な廃止を開始しました。そのため、ほとんどのMicrosoft 365テナントでは、パラメーター -Browser-ModernAuth を使用したBrowser認証およびModern authentication方式のみが機能するようになります。この変更の詳細については、「Microsoft 365における「Other user」認証の重要な変更点」を参照してください。

前提条件

注: より高い管理者権限を持っている場合でも、各OneDriveでサイト コレクション管理者である必要があります。以下の手順(9)では、SharePoint管理者またはグローバル管理者の権限を使用して、すべてのOneDriveにサイト コレクションのアクセス許可を適用します。PowerShellスクリプトは、各OneDriveを移行する際にサイト コレクション管理者の権限を削除します。

手順

OneDrive for Businessの移行では、移行元と移行先のすべてのOneDriveをCSVファイルに一覧化し、それらのパラメーターをループ処理してOneDriveごとにコピーするPowerShellスクリプトを作成する必要があります。

移行用のCSVガイドを作成する

  1. All reportsに移動します。

  2. 右上にあるCreate custom reportをクリックします。

  3. オブジェクトの種類としてOneDrive for Businessを選択します。

  4. Continue without savingをクリックします。

  5. 移行元のテナントを選択します。

  6. Runをクリックします。

  7. リストの一番上にあるチェックボックスを使用して、すべてのOneDriveを選択します。

  8. クイック操作メニューEditをクリックします。

  9. TransformationsドロップダウンでAdd administratorsを選択します。

  10. 表示されるSelect user or groupフィールドで、自分のアカウントを検索して追加します。

  11. Applyをクリックします。

  12. Backを2回クリックして、レポート結果に戻ります。

  13. 右上にあるExportをクリックします。

  14. ファイルをドライブに保存します。

  15. 手順(1)から(14)を繰り返します。その際、手順(5)では移行先のテナントを選択します。

  16. Excelを開きます。

  17. 最初の2つの列に、SourceSiteDestinationSiteというタイトルを追加します。

  18. 手順(14)と(15)で保存した2つのファイルを開きます。

  19. 両ファイルのデータを1つの新しいドキュメントにまとめ、それぞれの列の下でコピー元URLとコピー先URLが対応するようにします。

    列情報のスクリーンショット


    アルファベット順の並べ替えでうまくいかない場合は、データを手動で並べ替えるか、ExcelマクロやPowerShellを使って対応してください。

  20. この新しいファイルをCSV形式でドライブに保存します。

スクリプトを作成する

次のスクリプトをコピーし、任意のPowerShellアプリケーションに貼り付けます。

Import-Module Sharegate

# Define the CSV file path
$csvFile = "C:\CSV\CopyContent.csv"

# Import the CSV file
$table = Import-Csv $csvFile -Delimiter ","

# Define the source and destination connections
$srcSiteConnection = Connect-Site -Url "https://sourcetenantname-my.sharepoint.com/" -ModernAuth
$dstSiteConnection = Connect-Site -Url "https://destinationtenantname-my.sharepoint.com/" -ModernAuth

# Set variables for site and list operations
Set-Variable srcSite, dstSite, srcList, dstList

# Loop through each row in the CSV
foreach ($row in $table) {
# Clear previous values of variables
Clear-Variable srcSite
Clear-Variable dstSite
Clear-Variable srcList
Clear-Variable dstList

# Connect to source and destination sites
$srcSite = Connect-Site -Url $row.SourceSite -UseCredentialsFrom $srcSiteConnection
$dstSite = Connect-Site -Url $row.DestinationSite -UseCredentialsFrom $dstSiteConnection

# Get source and destination lists
$srcList = Get-List -Site $srcSite -Name "Documents"
$dstList = Get-List -Site $dstSite -Name "Documents"

# Copy content from source list to destination list
Copy-Content -SourceList $srcList -DestinationList $dstList

# Remove site collection administrator permissions
Remove-SiteCollectionAdministrator -Site $srcSite
Remove-SiteCollectionAdministrator -Site $dstSite
}

スクリプトを自分の環境に合わせて調整してください。以下にいくつかのガイドラインを示します。

  • $csvFile: 以前に保存したCSVファイルを指すように、パスを調整します。

  • $table: 区切り文字は、CSVファイル内で行の項目を区切るために使用される記号です。スクリプトがファイルと同じ区切り文字を使用していることを確認してください(CSVファイルをメモ帳で開くと、簡単に確認できます)。

  • $srcSiteConnectionおよび$dstSiteConnection: URLを、対応する移行元テナントおよび移行先テナントにあるOneDriveのルートURLに置き換えます。

  • Connect-site: SharePointサイトまたはOneDrive for Businessに接続するためのコマンドです。Modern authenticationから認証方法を変更する必要がある場合は、「Connect-Site」を参照してください。

  • Set-VariableおよびClear-Variable: これらのコマンドは、接続エラーによってデータが誤ったOneDriveに保存されてしまう問題を防ぐのに役立ちます。

  • foreach: foreachを使用して、CSVファイル内の値をループ処理します。詳細についてはこちらを参照してください。

  • -UseCredentialsFrom: このスクリプトは、単一の接続を再利用するために、-UseCredentialsFrom パラメーターを使用したModern authenticationを利用します。このスクリプトを開始すると、Microsoft 365の認証情報の入力を求められます。テナントで多要素認証(MFA)が強制されていない場合は、無人スケジュール実行のためにユーザー名とパスワードを使用するようにスクリプトを設定できます。詳細については、「Connect-Site」および「ブラウザーおよびモダン接続方式での認証情報の再入力を回避する」を参照してください。

  • Remove-SiteCollectionAdministrator: この関数は、移行後にOneDrive上のユーザーアカウントをサイト コレクション管理者から削除します。詳細については、「サイト コレクション管理者を削除する」を参照してください。

スクリプトを適切に調整し、テストが完了したら実行してください。

考慮事項

  • -ModernAuthを使用したModern authenticationは、Microsoft 365における最も安全で永続性の高い認証方法であり、多要素認証(MFA)が強制されていない限り、UsernameおよびPassword変数と組み合わせて使用できます。ただし、いくつかの制限事項もあります。この接続方法のさまざまな使用方法や、必要に応じてBrowser authenticationに切り替える方法については、「Connect-Site」を参照してください。

  • Migration reportsは自動的に生成され、Tasksで確認できます。また、Export-Reportを使用してスクリプト内でレポートをエクスポートすることもできます。

  • PowerShellを使用して移行をスケジュール設定し、業務時間外に実行することで、パフォーマンスを最適化できます。

  • 増分移行を実行する方法については、「PowerShell で増分移行を実行する」の記事を参照してください。

  • ShareGate Migrateのコピーオプションを再現する方法については、「PowerShell のコピー オプション」を参照してください。

  • 移行するデータが数百ギガバイトに及ぶ場合は、複数のCSVファイルを作成し、小さなバッチに分けて移行を実行することをおすすめします。

  • スクリプトのエラーとテスト: 広く適用する前に、少数のOneDriveアカウントでPowerShellスクリプトをテストしてください。テストを行うことで、限定された範囲で潜在的な問題を発見できます。

  • 多言語組織: Microsoft 365環境で複数の表示言語が使用されている場合、スクリプト内で -Name に渡すライブラリ名が、そのライブラリの実際の表示名と一致しないことがあります。たとえば、ドイツ語環境ではDocumentsライブラリがDokumenteという名前になっている場合があり、これによりスクリプトが失敗します。詳細については、「Cannot validate argument on parameter 'List' - multilingual organizations」を参照してください。

この記事はAIによって翻訳されています。ご不明な点がある場合は、英語の原文をご確認ください。

こちらの回答で解決しましたか?