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

PowerShellを使用して移行用の新しいOneDriveフォルダーを作成する

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

複数のOneDriveにコンテンツをコピーするPowerShellスクリプトのいずれかを実行する場合、OneDriveに新しいフォルダーを直接プロビジョニングすることはできません。

このガイドでは、移行スクリプトを実行する前に、ソースファイルのコピー先となる新しいフォルダーをOneDriveに追加する方法を説明します。

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

前提条件

注: より高い管理者権限を持っている場合でも、各OneDriveでサイトコレクション管理者である必要があります。以下の手順(12)では、SharePoint管理者またはグローバル管理者権限を使用して、各OneDriveにフォルダーを作成するために必要なサイトコレクション管理者権限を適用します。

このガイドではサイトコレクション管理者権限を削除しません。この手順は、他のPowerShell OneDrive移行ガイドに含まれているためです。

スクリプトの準備

次の手順で、ローカルドライブにフォルダーを作成し、すべてのOneDriveのCSVリストを作成します。

  1. ローカルドライブに新しいフォルダーを作成します。

  2. お好みで、OneDrive内のフォルダーに名前を付けます(例: C:\Migrated data)。

  3. フォルダーのパスを控えておきます。

  4. ShareGate Migrateですべてのレポートに移動します。

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

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

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

  8. テナントを選択します。

  9. 実行をクリックします。

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

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

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

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

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

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

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

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

  18. レポートをExcelで開きます。

  19. 2列目にONEDRIVEURLという見出しを追加します。

  20. この新しいファイルをCSVとしてドライブに保存します(例: C:\foldermigration.csv)。

  21. CSVファイルのパスを控えておきます。

ヒント: この同じCSVリストは、OneDrive移行にも再利用できます。

スクリプトを作成する

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

# Define the CSV file path
$csvFile = "C:\foldermigration.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 file path to the destination list
Import-Document -SourceFilePath "C:\Migrated data" -DestinationList $dstList
}

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

  • $csvFile: 先ほど保存したCSVファイルを指すようにパスを調整してください。

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

  • $dstSiteConnection: URLを、移行先テナントのOneDriveのルートURLに置き換えてください。

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

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

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

  • -SourceFilePath: "C:\Migrated data"を、手順(2)で作成したフォルダーのパスに置き換えてください。

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

コンテンツを新しいフォルダーに移行する

コンテンツを新しいOneDriveフォルダーに移行するには、OneDrive移行スクリプトのコピー行に-DestinationFolder "folder name"を追加する必要があります(folder nameをご自身のフォルダー名に置き換えてください)。

移行スクリプトのコピー行は、次のようになります。

# Import documents from the source folder to the destination list and folder
Import-Document -SourceFolder $row.DIRECTORY -DestinationList $dstList -DestinationFolder "Migrated data"

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

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