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

PowerShellを使用してMy SitesをOneDrive for Businessに移行する

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

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

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

前提条件

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

手順

ヒント: ドキュメントをOneDrive内の新しいフォルダーに移行するには、ウォークスルー - PowerShellを使用して新しいOneDriveフォルダーに移行するを参照してください。

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

  1. すべてのレポートに移動します。

  2. 右上隅のカスタムレポートを作成をクリックします。

  3. オブジェクトタイプとしてサイト コレクションを選択します。

  4. 保存せずに続行をクリックします。

  5. My Sitesで使用しているWebアプリを選択します。

  6. 次へをクリックします。

  7. 今すぐ実行をクリックします。

  8. リストの一番上にあるチェックマークボックスで、すべてのMy Sitesを選択します。

  9. クイックアクションメニュー編集をクリックします。

  10. 変換ドロップダウンで管理者の追加を選択します。

  11. 表示されたユーザーまたはグループの選択フィールドでアカウントを検索して追加します。

  12. 適用をクリックします。

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

  14. 右上隅のエクスポートをクリックします。

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

  16. すべてのレポートに戻ります。

  17. カスタムレポートを作成をクリックします。

  18. 今度はオブジェクトタイプとしてOneDrive for Businessを選択します。

  19. 保存せずに続行をクリックします。

  20. OneDriveで使用しているMicrosoft 365テナントを選択します。

  21. 次へをクリックします。

  22. 今すぐ実行をクリックします。

  23. リストの一番上にあるチェックマークボックスで、すべてのOneDriveを選択します。

  24. クイックアクションメニュー編集をクリックします。

  25. 変換ドロップダウンで管理者の追加を選択します。

  26. 表示されたユーザーまたはグループの選択フィールドでアカウントを検索して追加します。

  27. 適用をクリックします。

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

  29. 右上隅のエクスポートをクリックします。

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

  31. Excelを開きます。

  32. 最初の2列にSourceSiteDestinationSiteという見出しを追加します。

  33. 前の手順で保存した2つのファイルを開きます。

  34. 両方のファイルのデータを新しいドキュメントに結合し、それぞれの列で移行元URL移行先URLに対応するようにします。

    Screen_Shot_2019-07-26_at_9.14.26_AM.png

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

  35. この新しいファイルを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 source and destination connections
$srcUsername = "sourceusername"
$srcPassword = ConvertTo-SecureString 'sourcepassword' -AsPlainText -Force
$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 the source site
$srcSite = Connect-Site -Url $row.SourceSite -Username $srcUsername -Password $srcPassword

# Connect to the destination site
$dstSite = Connect-Site -Url $row.DestinationSite -UseCredentialsFrom $dstSiteConnection

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

# Copy content from the source list to the 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をメモ帳で開くと簡単に確認できます)。

  • $srcUsername, $srcPassword: "sourceusername"、'sourcepassword'を、ご自身のSharePoint認証情報に置き換えてください。

  • $dstSiteConnection: URLを、該当するテナントのOneDriveのルートURLに置き換えてください。

  • Connect-site: SharePointサイトに接続するためのコマンドです。認証方式を変更する必要がある場合は、Connect Siteを参照してください。

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

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

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

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

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

考慮事項

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

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

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

  • このスクリプトでは既定でコピーして置換が使用されます。増分移行を実行したい場合は、New-CopySettingsコマンドを使用できます。

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

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

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

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

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