PowerShell コマンドレットを使用して、オンプレミス コンテンツを SharePoint にアップロードする

注:

SharePoint 移行ツール (SPMT) は、移行プロセスの簡略化をサポートします。 SPMT は、SharePoint Server チーム サイトやネットワーク ファイル共有の Microsoft 365 への移行をガイドするウィザード形式のエクスペリエンスを提供します。 これは、すべての Microsoft 365 ユーザーが利用できます: SPMT のダウンロード

重要

中国の 21Vianet が運用する Office 365 のユーザーは、現在 SharePoint 移行ツールを利用できません。

この記事では、SharePoint Migration PowerShell コマンドレットを使用して、オンプレミスのファイル共有から Microsoft 365 にコンテンツを移行する方法を説明します。

SharePoint Migration PowerShell コマンドレットは、オンプレミスのコンテンツをファイル共有から移動するために設計されています。 このコマンドレットは最小限の CSOM 呼び出しを必要とし、Azure の一時的な BLOB ストレージを使用してデータの大規模な移行を処理します。

前提条件

  • サポートされるオペレーティング システム

    • Windows 7 Service Pack 1
    • Windows 8
    • Windows Server 2008 R2 SP1
    • Windows Server 2008 Service Pack 2
    • Windows Server 2012、Windows Server 2012 R2
  • Windows PowerShell 4.0

注:

アクセス許可: ターゲット サイトのサイト コレクション管理者である必要があります。

開始する前に

手順 1: SharePoint Online 管理シェルをインストールする

  1. 以前のバージョンの SharePoint Online 管理シェルをすべてアンインストールします。

  2. SharePoint Online 管理シェルをダウンロードしてインストールします。

  3. SharePoint Online 管理シェルを開いて、[管理者として実行] を選択します。

手順 2: 作業ディレクトリを設定する

移行を開始する前に、2 つの空のフォルダーを使用して、作業ディレクトリを設定する必要があります。 これらのフォルダーには XML しか含まれないため、多くのディスク領域は必要ありません。

  1. 一時的なパッケージ フォルダーを作成します。

  2. 最終的なパッケージ フォルダーを作成します。

手順 3: 場所と資格情報を特定する

資格情報と、ソースファイル、ターゲット ファイル、および Web の場所を特定します。

ローカル コンピューターで SharePoint Online 管理シェルを開きます。 次のコマンドを、自分の値に置き換えて実行します。

$cred = (Get-Credential admin@contoso.com)
$sourceFiles = '\\fileshare\users\charles'
$sourcePackage = 'C:\migration\CharlesDocumentsPackage_source'
$targetPackage = 'C:\migration\CharlesDocumentsPackage_target'
$targetWeb = 'https://contoso-my.sharepoint.com/personal/charles_contoso_com'
$targetDocLib = 'Documents'

New-SPOMigrationPackage -SourceFilesPath $sourceFiles -OutputPackagePath $sourcePackage -TargetWebUrl $targetWeb -TargetDocumentLibraryPath $targetDocLib -IgnoreHidden -ReplaceInvalidCharacters

手順 4: オンプレミスのファイル共有から新しいコンテンツ パッケージを作成する

この手順では、ファイル共有から新しい移行パッケージを作成します。 ファイル共有からコンテンツ パッケージを作成するには、 New-SPOMigrationPackage ソース パスを対象とするコンテンツの一覧を読み取り、XML を生成して移行を実行します。

省略可能と示されていない限り、次のパラメーターが必要です。

  • SourcefilesPath: 移行するコンテンツを指します。

  • OutputPackagePath: 一時フォルダーを指します。

  • TargetWebUrl: 送信先の Web を指定します。

  • TargetDocumentLibraryPath: Web 内のドキュメント ライブラリを指定します。

  • IgnoreHidden: 非表示のファイルにスキップします (省略可能)

  • ReplaceInvalidCharacters: 可能な場合に無効な文字を修正します (省略可能)

例:

以下の例では、ファイル共有から新しいパッケージを作成する方法を示します。 非表示のファイルを無視し、ファイル/フォルダー名のサポートされていない文字を置き換えます。

    New-SPOMigrationPackage -SourceFilesPath $sourceFiles -OutputPackagePath $sourcePackage -TargetWebUrl $targetWeb -TargetDocumentLibraryPath $targetDocLib -IgnoreHidden -ReplaceInvalidCharacters`

手順 5: ターゲット サイト用にコンテンツ パッケージを変換する

コマンドを ConvertTo-SPOMigrationTargetedPackage 使用して、一時フォルダーに生成された SML を変換します。 これによりターゲットとなる移行パッケージ メタデータ ファイルの新しいセットがターゲット ディレクトリに保存されます。 これが最終的なパッケージです。

注:

ターゲット サイト コレクション管理者の資格情報が、データ サイト コレクションに接続するためのデータを収集するために使用されます。

入力する必要がある 6 つのパラメーター (他のパラメーターは省略可能):

  • ParallelImport: 並列スレッドを使用してパフォーマンスを最適化するようにツールに指示します。

  • SourceFiles: パッケージのソース コンテンツ ファイルのディレクトリの場所を指定します。

  • SourcePackagePath: 一時パッケージ フォルダーを指定します。

  • OutputPackagePath: 最終的なパッケージ フォルダーを指定します。

  • Credentials: 移行先サイトの管理者権限を持つ SharePoint 資格情報。

  • TargetWebUrl: 移行先の Web の URL。

  • TargetDocumentLibraryPath: 移行先ライブラリへのパス。

例:

この例では、ターゲット サイト コレクション内のデータを検索することで、パッケージをターゲット パッケージに変換する方法を示します。 ファイル共有の移行パフォーマンスを高めるために、-ParallelImport パラメーターを使用します。

$finalPackages = ConvertTo-SPOMigrationTargetedPackage -ParallelImport -SourceFilesPath $sourceFiles -SourcePackagePath $sourcePackage -OutputPackagePath $targetPackage -Credentials $cred -TargetWebUrl $targetWeb -TargetDocumentLibraryPath $targetDocLib`

手順 6: インポートするコンテンツを送信する

この手順では、 Invoke-SPOMigrationEncryptUploadSubmit コマンドを使用して、ターゲット サイト コレクションに新しい移行ジョブを作成し、次に JobID を表す GUID を返します。 このコマンドは、暗号化されたソース ファイルとマニフェストをジョブごとに一時的な Azure BLOB ストレージにアップロードします。

入力する必要があるパラメーターは 4 つあります。 他のパラメーターは省略可能です。

  • TargetwebURL: 移行先の Web を指定します。

  • SourceFilesPath: インポートするファイルを指定します。

  • SourcePackagePath: インポートするファイルの最終マニフェストを指定します。

  • Credentials: 展開先サイトにサイト コレクションの管理者権限を持つ SharePoint 資格情報。

例 1:

この例では、パッケージ データを送信して新しい移行ジョブを作成する方法を示します。

 $job = Invoke-SPOMigrationEncryptUploadSubmit -SourceFilesPath $sourceFiles -SourcePackagePath $targetPackage -Credentials $cred -TargetWebUrl $targetWeb

例 2:

この例では、パッケージ データを送信して、並列インポート用の新しい移行ジョブを作成する方法を示します。

$jobs = $finalPackages | % {Invoke-SPOMigrationEncryptUploadSubmit -SourceFilesPath $_.FilesDirectory.FullName -SourcePackagePath $_.PackageDirectory.FullName -Credentials $cred -TargetWebUrl $targetWeb}

送信されるジョブごとに、Invoke コマンドレットはジョブの一部として次のプロパティを返します。

  • JobId: SPO のジョブの ID。

  • ReportingQueueUri: 移行のリアルタイム進行状況メッセージを格納する SharePoint Azure キュー。

  • Encryption: Azure へのコンテンツのアップロードに使用される暗号化キーとメソッド。 このキーは、キューのメッセージを暗号化してログをインポートするときに必要です。

独自の Azure Storage アカウントを使用してストレージにコンテンツをアップロードする場合は、 Set-SPOMigrationPackageAzureSourceSubmit-SPOMigrationJob を使用します

重要

Azure Storage を使用する場合は、帯域幅の料金が発生する可能性があります。 料金は、Azure のプランの種類と移行サイズによって異なります。 一般的な価格については、帯域幅の料金を参照してください。

(省略可能) 手順 7: SharePoint 移行の処理と監視

ジョブが送信されると、Azure と SharePoint だけが対話しながらコンテンツをフェッチして展開先に移行します。 この処理はタイマージョブ ベースです。つまり、先着順にキューに入れられることを意味します。 この処理では、同じ人物が他のジョブをキューに入れることもできます。

実行している他のジョブが存在しない場合は、1 分間の遅延が発生する可能性があります。

ジョブの状態を確認する

手順 6 で返された EncryptionKey を使用して、Azure Storage アカウント キューに投入されたリアルタイムの更新を表示することで、ジョブの状態を確認できます。

ログを表示する

自分の Azure Storage アカウントを使用している場合、Azure Storage 内のマニフェスト コンテナーで、発生したすべてのログを表示することができます。 この段階では、これらのコンテナーを Azure でのバックアップとして保持しない場合は、削除しても問題ありません。

エラーまたは警告があった場合は、マニフェスト コンテナーに .err ファイルまたは .wrn ファイルが作成されます。

手順 6 で Invoke-SPOMigrationEncryptUploadSubmit によって作成された一時的な Azure Storage を使用している場合は、"イベント" 値 JobLogFileCreate で Azure キュー メッセージを復号化することで、インポート ログ SAS URL を取得できます。 インポート ログ SAS URL を使用してログ ファイルをダウンロードし、手順 6 で返された暗号化キーでそのファイルの暗号化を解除できます。

再利用可能なシナリオのスクリプト

次のサンプル スクリプトを使用します。 このスクリプトには、場所および資格情報を特定するところから、パッケージ データを送信して新しい移行ジョブを作成するまでの手順が含まれます。

$userName = "admin@contoso.onmicrosoft.com"
$sourceFiles = "d:\data\documents"
$packagePath = "d:\data\documentPackage"
$spoPackagePath = "d:\data\documentPackageForSPO"
$targetWebUrl = "https://contoso.sharepoint.com/sites/finance"
$targetLibrary = "Documents"
$cred = Get-Credential $userName
  
New-SPOMigrationPackage -SourceFilesPath $sourceFiles -OutputPackagePath $packagePath -TargetWebUrl $targetWebUrl -TargetDocumentLibraryPath $targetLibrary -IgnoreHidden -ReplaceInvalidCharacters

ターゲット サイト コレクション内のデータを検索して、パッケージをターゲット パッケージに変換する

$finalPackages = ConvertTo-SPOMigrationTargetedPackage -SourceFilesPath $sourceFiles -SourcePackagePath $packagePath -OutputPackagePath $spoPackagePath -TargetWebUrl $targetWebUrl -TargetDocumentLibraryPath $targetLibrary -Credentials $cred

パッケージ データを送信して、移行ジョブを作成する

$job = Invoke-SPOMigrationEncryptUploadSubmit -SourceFilesPath $sourceFiles -SourcePackagePath $spoPackagePath -Credentials $cred -TargetWebUrl $targetWebUrl
  
This sample shows how to get the returned information of a job, which comes in the form of a GUID.
  
```powershell
$job = $jobs[0]
$job.JobId
Guid
----
779c4b3b-ec24-4705-bb58-c38f4329418c

この例では、$job.ReportingQueueURi.AbosoluteUri を取得する方法を示します。

# To obtain the $job.ReportingQueueUri.AbsoluteUri
https://spodm1bn1m013pr.queue.core.windows.net/953pq20161005-f84b9e51038b4139a179f973e95a6d6f?sv=2014-02-14&sig=TgoUcrMk1Pz8VzkswQa7owD1n8TvLmCQFZGzyV7WV8M%3D&st=2016-10-04T07%3A00%3A00Z&se=2016-10-26T07%3A00%3A00Z&sp=rap

この例では、暗号化キーとサンプルの戻り値を取得する方法を示します。

$job.Encryption
EncryptionKey                                       EncryptionMethod
-----------------------                            ------------------
{34, 228, 244, 194...}                              AES256CBC

重要

メッセージはすべて、キューで暗号化されます。 ReportingQueue から読み取るには、EncryptionKey が必要です。

ベスト プラクティスと制限事項

説明 推奨事項
パッケージのサイズ 10 から 20 GB
ファイル共有の移行のために -ParallelImport スイッチを使用します。これにより、自動的に大きなパッケージが小さなパッケージに分割されます。
ファイルのサイズ
2 GB
ターゲット サイズ
移行が完了するまではユーザーがターゲット サイトにアクセスできないようにしておく必要があります
SharePoint の制限
Microsoft 365 の SharePoint のサービス制限

Azure の制限

リソース 既定/制限
ストレージ アカウントあたりの TB
500
単一の BLOB コンテナー、テーブル、またはキューの最大サイズ。
500
ストレージ アカウントあたりの BLOB コンテナー、BLOB、ファイル共有、テーブル、キュー、エンティティ、またはメッセージの最大数。
唯一の制限は、500 TB のストレージ アカウント容量です。
単一の BLOB のターゲット スループット
1 秒あたり最大 60 MB または 1 秒あたり最大 500 要求。

SharePoint Online のコマンドレット リファレンス