使用 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
注意
权限:你必须是目标站点上的网站集管理员。
开始之前
使用现有的 Active Directory 或向 Microsoft 365 添加账户的其他选项之一配置 Microsoft 365 设置。 有关详细信息,请参阅 Microsoft 365 与本地环境的集成 和 同时添加用户及分配许可证。
安装 SharePoint Online 命令行管理程序并设置工作目录。
步骤 1:安装 SharePoint Online 命令行管理程序
卸载以前所有版本的 SharePoint Online Management Shell。
下载并安装SharePoint Online Management Shell。
打开SharePoint Online Management Shell,并选择以管理员身份运行。
步骤 2:设置工作目录
在开始迁移之前,需要使用两个空文件夹来设置工作目录。 这些文件夹无需太多磁盘空间,因为它们仅包含 XML。
创建一个临时包文件夹。
创建一个最终包文件夹。
步骤 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}
对于每个提交的作业,Invoke
cmdlet 都会将这些属性作为作业中的一部分返回:
JobId:SPO 中作业的 ID。
ReportingQueueUri:SharePoint Azure 队列,用于存储迁移的实时进度消息。
Encryption:用于将内容上传到 Azure 时的加密密钥和方法。 当解密队列消息和导入日志时需要该密钥。
如果使用自己的 Azure 存储帐户将内容上传到存储,请使用 Set-SPOMigrationPackageAzureSource 和 Submit-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 次请求。 |