使用 PowerShell Cmdlet 將內部部署內容上傳到 SharePoint

注意事項

SharePoint 移轉工具 (SPMT) 可協助簡化移轉程序。 SPMT 提供類似精靈的體驗,引導您移轉 SharePoint Server 小組網站或網路檔案共用至 Microsoft 365。 它可供所有 Microsoft 365 使用者使用: 下載 SPMT

重要事項

SharePoint 移轉工具目前不適用於由中國 21Vianet 運作的 Office 365 使用者。

此文章展示如何使用 SharePoint 移轉 PowerShell Cmdlet,將內部部署檔案共用的內容移轉到 Microsoft 365。

SharePoint 移轉 PowerShell Cmdlet 專門用來移動內部部署的檔案共用內容。 它們需要最少的 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:設定您的工作目錄

在開始移轉之前,您需要使用兩個空資料夾以設定工作目錄。 這些資料夾不需要太多磁碟空間,因為它們只包含 XML。

  1. 建立暫存套件資料夾。

  2. 建立最終套件資料夾。

步驟 3:決定位置和認證

識別您的認證以及來源檔案、目標檔案和網站的位置。

在您的本機電腦上,開啟 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:指向您的目的地網站。

  • TargetDocumentLibraryPath︰指向網站內的文件庫。

  • 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:您的目的地網站之 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:指向目的地網站。

  • 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 Cmdlet 會隨著工作傳回這些屬性:

  • JobId:SPO 中的工作識別碼。

  • ReportingQueueUri:儲存移轉之即時進度訊息的 SharePoint Azure 佇列。

  • Encryption:將內容上傳到 Azure 使用的加密金鑰和方法。 解密佇列訊息和匯入記錄時需要此金鑰。

如果您使用自己的 Azure 儲存體帳戶將內容上傳至儲存體,請使用 Set-SPOMigrationPackageAzureSourceSubmit-SPOMigrationJob

重要事項

如果您選擇使用您的 Azure 儲存體,這可能會產生頻寬費用。 收費將取決於您的 Azure 方案類型和移轉大小。 如需一般價格,請參閱 頻寬價格

(選用) 步驟 7:處理及監控 SharePoint 移轉

提交工作後,只有 Azure 和 SharePoint 有所互動,以擷取內容並將其移轉到目的地。 此程序屬於計時器工作,也就是先到者先處理的佇列形式。 此流程不會封鎖同一個人佇列其他工作。

如果沒有其他正在執行的工作,則可能會有 1 分鐘的延遲。

檢查工作狀態

要檢查工作的狀態,請使用步驟 6 中傳回的 EncryptionKey 檢視在 Azure 儲存體帳戶中張貼的即時更新資訊。

檢視記錄

如果您使用自己的 Azure 儲存體帳戶,則可以檢視 Azure 儲存體中資訊清單容器中發生的所有事件的記錄檔。 在此階段,如果您不想留在 Azure 中做為備份,可以放心刪除這些容器。

如果發生錯誤或警告,系統會在資訊清單容器中建立 .err.won 檔案。

如果您在步驟 6 中使用 Invoke-SPOMigrationEncryptUploadSubmit 所建立的暫存 Azure 儲存體,您可以使用 「Event」 值 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 的目標輸送量
每秒最多 60 MB 或 500 個要求。

Cmdlet 參考適用於 SharePoint Online