注: PowerShellとの連携には、ShareGate MigrateのProまたはEnterpriseサブスクリプションが必要です。Essentialsプランでは利用できません。
このガイドでは、Import-GoogleDriveDocumentコマンドを使用して、Google My DriveからOneDrive for Businessへのファイル移行をPowerShellで自動化する方法を説明します。
注: 2026年1月末以降、MicrosoftはIDCRL Cookieの段階的な廃止を開始しました。これにより、ほとんどのMicrosoft 365テナントで、パラメーター-Browserおよび-ModernAuthを使用するブラウザーおよびModern Authentication方式のみが機能するようになります。この変更の詳細については、Microsoft 365における「その他のユーザー」認証の重要な変更を参照してください。
ヒント: このガイドは、ファイルとフォルダーをOneDrive内のDocumentsライブラリのルートに移行することに焦点を当てています。ドキュメントを新しいフォルダーに移行する方法については、ウォークスルー - PowerShellを使用して新しいOneDriveフォルダーに移行するを参照してください。
前提条件
グローバル管理者またはSharePoint管理者権限を持っていること。
Google Driveドメインを管理者として接続できるように設定していること。
Google Workplaceを管理者として接続できるように設定する方法については、管理者として接続するを参照してください。
OneDriveがプロビジョニングされていること(必要に応じて、Get-OneDriveURLコマンドレットでこのプロセスを自動化できます)。
注: より高い管理者権限を持っている場合でも、各OneDriveでサイトコレクション管理者である必要があります。以下の手順(15)では、SharePoint管理者またはグローバル管理者権限を使用して、すべてのOneDriveにサイトコレクション管理者権限を適用します。PowerShellスクリプトは、各Google Driveを移行する際にサイトコレクション管理者権限を削除します。
手順
移行用のCSVガイドを作成する
移行を自動化するには、まずGoogle DriveをOneDriveにマッピングするCSVファイルを作成する必要があります。
Google Driveユーザーのメールアドレスの一覧をCSVとして ダウンロードします。
CSVファイルを開きます。
Google Driveのメールアドレスが含まれる列のみを残すようにファイルを編集します。
見出し行を挿入します。
最初の列にGOOGLEDRIVEEMAILという名前を付けます。
ShareGate Migrateを開きます。
サイドバーからすべてのレポートを選択します。
カスタムレポートを作成をクリックします。
オブジェクトタイプとしてOneDrive for Businessを選択します。
保存せずに続行をクリックします。
テナントを選択します。
次へをクリックします。
ローカルキャッシュを使用をオフにします。
今すぐ実行をクリックします。
リストの一番上にあるチェックマークで、すべてのOneDrive for Businessアカウントを選択します。
クイックアクションメニューで編集をクリックします。
変換ドロップダウンで管理者の追加を選択します。
表示されたユーザーまたはグループの選択フィールドでアカウントを追加します。
適用をクリックします。
戻るを2回クリックしてレポート結果に戻ります。
右上隅のエクスポートをクリックします。
ファイルをドライブに保存して開きます。
サイトアドレスの見出しをONEDRIVEURLに置き換えます。
このCSVをGoogle DriveのメールアドレスのCSVと結合し、各Google Driveのメールアドレスが正しいOneDrive for BusinessのURLに一致するようにします。
注: アルファベット順の並べ替えがうまくいかない場合は、データを手動で並べ替えるか、Excelマクロまたは 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 ","
# Connect to Google Drive as an admin
$connection = Connect-GoogleDrive -Email [email protected] -Admin
# Define OneDrive 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 user's OneDrive site
$dstSite = Connect-Site -Url $row.ONEDRIVEURL -UseCredentialsFrom $dstSiteConnection
# Get the "Documents" list from the OneDrive site
$dstList = Get-List -Name Documents -Site $dstSite
# Get the Google Drive for the specified user
$myDrive = Get-GoogleMyDrive -Connection $connection -Email $row.GOOGLEDRIVEEMAIL
# Import documents from Google Drive to the OneDrive "Documents" list
Import-GoogleDriveDocument -Drive $myDrive -SourceView "MyDocuments" -DestinationList $dstList
# Remove site collection administrator permissions
Remove-SiteCollectionAdministrator -Site $dstSite
}
ご自身の環境に合わせてスクリプトを調整してください。以下にいくつかのガイドラインを示します。
$csvFile: 先ほど保存したCSVファイルを指すようにパスを調整してください。
$table: 区切り文字は、CSVで行の項目を区切るために使用されている記号です。スクリプトがファイルと同じ区切り文字を使用していることを確認してください(CSVをメモ帳で開くと簡単に確認できます)。
$connection: メールアドレスを、ご自身のGoogle Drive管理者のメールアドレスに置き換えてください。詳細については、Connect Google Driveを参照してください。
$dstSiteConnection: URLを、該当するテナントのOneDriveのルートURLに置き換えてください。
$dstSite: "myusername"を、ご自身のMicrosoft 365管理者アカウントのユーザー名に置き換えてください。
Connect-site: SharePointサイトまたはOneDrive for Businessに接続するためのコマンドです。Modern Authenticationから認証方式を変更する必要がある場合は、Connect Siteを参照してください。
Set-VariableおよびClear-Variable: これらのコマンドは、接続エラーによってデータが誤ったOneDriveに移行されてしまう問題を防ぐのに役立ちます。
foreach:
foreachを使用して、CSVファイル内の値をループ処理します。ShareGate PowerShellスクリプトでforeachを使用する方法の詳細については、PowerShellでforeachループステートメントとCSVファイルを使用して複数の移行先との間でコピーするを参照してください。-UseCredentialsFrom: このスクリプトは、単一の接続を再利用するために-UseCredentialsFromパラメーターを指定したModern Authenticationを使用します。このスクリプトは、開始時にMicrosoft 365の認証情報の入力を求めます。テナントでMFAが強制されていない場合は、無人スケジュール実行のためにユーザー名とパスワードを使用するようスクリプトを設定できます。詳細については、Connect-SiteおよびブラウザーおよびModernの接続方法で認証情報の入力を繰り返さないようにするを参照してください。
Remove-SiteCollectionAdministrator: 各Google Driveの移行後、OneDrive上のユーザーアカウントのサイトコレクション管理者権限を削除します。詳細については、サイトコレクション管理者を削除するを参照してください。
適切に調整してテストしたら、スクリプトを実行してください。
考慮事項
-ModernAuthを使用するModern Authenticationは、Microsoft 365において最も安全で永続的な認証方式であり、多要素認証(MFA)が強制されていない限り、UsernameおよびPassword変数と組み合わせて使用できます。いくつかの制限事項もあります。この接続方法のさまざまな使い方や、必要に応じてブラウザー認証への切り替え方法については、Connect-Siteを参照してください。
移行レポートは自動的に生成され、タスクで確認できます。スクリプト内でExport-Reportを使用してエクスポートすることもできます。
PowerShellを使用して移行をスケジュールし、業務時間外に実行してパフォーマンスを最適化することもできます。
増分移行を実行するには、PowerShellを使用した増分更新の記事を参照してください。
PowerShellでのコピーオプションの使用方法の詳細については、PowerShellのコピーオプションを参照してください。
スクリプトのエラーとテスト: 広く適用する前に、少数のOneDriveアカウントでPowerShellスクリプトをテストしてください。テストによって、潜在的な問題を限定された範囲で特定できます。
この記事はAIによって翻訳されています。ご不明な点がある場合は、英語の原文をご確認ください。
