使用 PowerShell cmdlet 将本地内容上传到 SharePoint

注意

SharePoint 迁移工具(SPMT)有助于简化迁移过程。 SPMT 提供类似于向导的体验,可指导你将 SharePoint Server 团队网站或网络文件共享迁移到 Microsoft 365。 它可供所有 Microsoft 365 用户使用: 下载 SPMT

重要

目前,21Vianet 在中国运营的 Office 365 用户还无法使用 SharePoint 迁移工具。

本文介绍了如何使用 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 Management Shell。

  2. 下载并安装SharePoint Online Management Shell。

  3. 打开SharePoint Online Management Shell,并选择以管理员身份运行

步骤 2:设置工作目录

在开始迁移之前,需要使用两个空文件夹来设置工作目录。 这些文件夹无需太多磁盘空间,因为它们仅包含 XML。

  1. 创建一个临时包文件夹。

  2. 创建一个最终包文件夹。

步骤 3:确定位置和凭据

确定凭据和源文件、目标文件和 web 位置。

在本地计算机上打开 SharePoint Online Management Shell。 运行以下命令,但插入值:

$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。 它将一组新的目标迁移包元数据文件保存到目标目录。 这是最终包。

注意

你的目标网站集管理员凭据用于收集数据以连接到数据网站集。

有六个必须输入的参数(其他是可选的):

  • 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命令在目标网站集中创建新的迁移作业,并返回代表作业 ID 的 GUID。 此命令将加密的源文件上传到每个作业的临时 Azure blob 存储中,并将其表现出来。

有四个必要的参数需要输入。 其他的是可选的。

  • 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}

对于每个提交的作业,Invokecmdlet 都会将这些属性作为作业中的一部分返回:

  • JobId:SPO 中作业的 ID。

  • 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 存储,可以通过解密具有“事件”值 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 限制
SharePoint for Microsoft 365 中的服务限制

Azure 限制

资源 默认/限制
每个存储帐户的 TB 数
500
单个 Blob 容器、表或队列的最大尺寸。
500
每个存储帐户的 Blob 容器、Blob、文件共享、表、队列、实体或消息的最大数量。
唯一的限制是 500-TB 的存储帐户容量。
单个 Blob 的目标吞吐量
最高 60 MB 或每秒 500 次请求。

Cmdlet 参考是适用于 SharePoint Online