注: PowerShellとの連携には、ShareGate MigrateのProまたはEnterpriseサブスクリプションが必要です。Essentialsプランでは利用できません。
PowerShellを使用して、ファイル共有からOneDrive for Businessへの移行を自動化します。
注: 2026年1月末以降、MicrosoftはIDCRL Cookieの段階的な廃止を開始しました。これにより、ほとんどのMicrosoft 365テナントで、パラメーター-Browserおよび-ModernAuthを使用するブラウザーおよびModern Authentication方式のみが機能するようになります。この変更の詳細については、Microsoft 365における「その他のユーザー」認証の重要な変更を参照してください。
前提条件
ファイル共有に対して既定の読み取りNTFS許可以上を持っていること。
グローバル管理者またはSharePoint管理者権限が必要です。
OneDriveがプロビジョニングされていること(Get-OneDriveURLコマンドレットで自動化できます)。
注: より高い管理者権限を持っている場合でも、各OneDriveでサイトコレクション管理者である必要があります。手順(15)では、SharePoint管理者またはグローバル管理者権限を使用して、すべてのOneDriveにサイトコレクション管理者権限を適用します。その後、PowerShellスクリプトは各OneDriveを移行する際にサイトコレクション管理者権限を削除します。
手順
ヒント: ドキュメントをOneDrive内の新しいフォルダーに移行するには、ウォークスルー - PowerShellを使用して新しいOneDriveフォルダーに移行するを参照してください。
移行用のCSVガイドを作成する
次のスクリプトを使用して、DOMAINフォルダー内のすべてのディレクトリ名のリストを生成します。
dir –Directory Z:\ -Name | Out-File C:\MigrationPlanning\onedrivemigration.csv
パスをご自身の環境のものに置き換えてください。
スクリプトから生成されたCSVファイルをExcelで開きます。
見出し用に、結果の一番上に新しい行を挿入します。
最初の列にDIRECTORYという名前を付けます。
列内のディレクトリ名の前に、マッピングされたドライブ文字を挿入します(例: Z:)。
ShareGate Migrateを開きます。
すべてのレポートに移動します。
右上隅のカスタムレポートを作成をクリックします。
オブジェクトタイプとしてOneDrive for Businessを選択します。
保存せずに続行をクリックします。
テナントを選択します。
実行をクリックします。
リストの一番上にあるチェックマークボックスで、すべてのOneDriveを選択します。
クイックアクションメニューで編集をクリックします。
変換ドロップダウンで管理者の追加を選択します。
表示されたユーザーまたはグループの選択フィールドでアカウントを検索して追加します。
適用をクリックします。
戻るを2回クリックしてレポート結果に戻ります。
右上隅のエクスポートをクリックします。
ファイルをドライブに保存して開きます。
サイトアドレスの見出しをONEDRIVEURLに置き換えます。
各行のディレクトリが正しいURLに対応するように、2つの表を結合します。
アルファベット順の並べ替えがうまくいかない場合は、データを手動で並べ替えるか、マクロやPowerShellを使った方法を検討してください。
この新しいファイルをCSVとしてドライブに保存します。
スクリプトを作成する
次のスクリプトをコピーして、お好みのPowerShellアプリケーションに貼り付けます。
Import-Module Sharegate
# Define the CSV file path
$csvFile = "C:\MigrationPlanning\onedrivemigration.csv"
# Import the CSV file
$table = Import-Csv $csvFile -Delimiter ","
# Define the destination connection
$dstSiteConnection = Connect-Site -Url "https://destinationtenantname-my.sharepoint.com/" -ModernAuth
# Set variables for site and list operations
Set-Variable dstSite, dstList
# Loop through each row in the CSV
foreach ($row in $table) {
# Clear previous values of variables
Clear-Variable dstSite
Clear-Variable dstList
# Connect to the OneDrive site
$dstSite = Connect-Site -Url $row.ONEDRIVEURL -UseCredentialsFrom $dstSiteConnection
# Get the "Documents" list from the destination site
$dstList = Get-List -Name Documents -Site $dstSite
# Import documents from the source folder to the destination list
Import-Document -SourceFolder $row.DIRECTORY -DestinationList $dstList
# Remove site collection administrator permissions
Remove-SiteCollectionAdministrator -Site $dstSite
}
ご自身の環境に合わせてスクリプトを調整してください。以下にいくつかのガイドラインを示します。
$csvFile: 先ほど保存したCSVファイルを指すようにパスを調整してください。
$table: 区切り文字は、CSVで列項目を区切るために使用されている記号です。スクリプトがファイルと同じ区切り文字を使用していることを確認してください(CSVをメモ帳で開くと簡単に確認できます)。
$dstSiteConnection: URLを、移行先テナントのOneDriveのルートURLに置き換えてください。
Connect-site: SharePointサイトまたはOneDrive for Businessに接続するためのコマンドです。Modern Authenticationから認証方式を変更する必要がある場合は、Connect Siteを参照してください。
-UseCredentialsFrom: このスクリプトは、単一の接続を再利用するために-UseCredentialsFromパラメーターを指定したModern Authenticationを使用します。このスクリプトは、開始時にMicrosoft 365の認証情報の入力を求めます。テナントでMFAが強制されていない場合は、無人スケジュール実行のためにユーザー名とパスワードを使用するようスクリプトを設定できます。詳細については、Connect-SiteおよびブラウザーおよびModernの接続方法で認証情報の入力を繰り返さないようにするを参照してください。
Set-VariableおよびClear-Variable: これらのコマンドは、接続エラーによってデータが誤ったOneDriveに移行されてしまう問題を防ぐのに役立ちます。
foreach: foreachを使用して、CSVファイル内の値をループ処理します。詳細についてはこちらを参照してください。
Remove-SiteCollectionAdministrator: 移行後にOneDrive上のユーザーアカウントのサイトコレクション管理者権限を削除します。詳細については、サイトコレクション管理者を削除するを参照してください。
適切に調整してテストしたら、スクリプトを実行してください。
考慮事項
-ModernAuthを使用するModern Authenticationは最も安全で永続的な認証方式であり、多要素認証(MFA)が強制されていない限り、UsernameおよびPassword変数と組み合わせて使用できます。いくつかの制限事項もあります。この接続方法のさまざまな使い方や、必要に応じてブラウザー認証への切り替え方法については、Connect-Siteを参照してください。
移行レポートは自動的に生成され、タスクで確認できます。Export-Reportを使用して、スクリプト内でレポートをエクスポートすることもできます。
PowerShellを使用して移行をスケジュールし、業務時間外に実行してパフォーマンスを最適化することもできます。
増分移行を実行するには、PowerShellを使用した増分更新の記事を参照してください。
ShareGate Migrateのコピーオプションを再現する方法については、コピーオプションを再現するを参照してください。
移行するデータが数百ギガバイトある場合は、複数のCSVを作成し、小さなバッチに分けて移行を実行することをお勧めします。
スクリプトのエラーとテスト: 広く適用する前に、少数のOneDriveアカウントでPowerShellスクリプトをテストしてください。テストによって、潜在的な問題を限定された範囲で特定できます。
この記事はAIによって翻訳されています。ご不明な点がある場合は、英語の原文をご確認ください。

