使用 PowerShell 迁移到 SharePoint
本文介绍基于 SharePoint 迁移工具 (SPMT) 迁移引擎的新 PowerShell cmdlet。 它们可用于将文件从 SharePoint 2010 和 SharePoint 2013 本地文档库和列表项以及文件共享移动到 Microsoft 365。 有关与 SharePoint 迁移相关的所有当前 PowerShell cmdlet 的信息,请参阅 Microsoft SharePoint 迁移工具 cmdlet 参考。
PowerShell cmdlet 的功能与 SharePoint 迁移工具相同。
注意
由中国世纪互联运营的 Office 365 的用户暂无法使用这些 PowerShell cmdlet。
系统要求
为获得最佳性能而建议的要求*
说明 | 建议 |
---|---|
CPU | 64 位四核处理器或更高 |
RAM | 16 GB |
本地存储 | 硬盘:150GB 可用空间 |
操作系统 | Windows Server 2016 Standard 或 Datacenter Windows Server 2012 R2 Windows 10 客户端 .NET Framework 4.6.2 |
Microsoft Visual C++ 2015 Redistributable | OneNote 迁移所必需 |
重要
需要 PowerShell 5.0x 和 .NET Framework 4.6.2 或更高版本来支持最多 400 个字符的文件路径的迁移。
最低要求(预期性能较差)
说明 | 最低要求 |
---|---|
CPU | 64 位 1.4 GHz 双核处理器或更高 |
RAM | 8 GB |
本地存储 | 硬盘:150 GB 可用空间 |
网卡 | 高速 Internet 连接 |
操作系统 | Windows Server 2008 R2 Windows 7 Windows 8 或 8.1 .NET Framework 4.6.2 |
Microsoft Visual C++ 2015 Redistributable | OneNote 迁移所必需。 |
PowerShell | 需要 PowerShell 5.x 来支持最多 400 个字符的文件路径的迁移。 不支持 PowerShell 6.0 或更高版本。 |
开始之前
使用现有的 Active Directory 或用于将帐户添加到 Microsoft 365 的其他选项之一预配 Microsoft 365。 有关详细信息,请参阅 Microsoft 365 与本地环境的集成和将用户添加到Microsoft 365 商业应用版。
打开文件夹:
$env:UserProfile\Documents\WindowsPowerShell\Modules\Microsoft.SharePoint.MigrationTool.PowerShell
请确保里面有DLLs,如果你使用OneDrive,你可能需要将WindowsPowershell文件夹复制到OneDrive / 文档中。
从此位置运行以下 PowerShell 命令
Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
创建和初始化迁移会话
- Register-SPMTMigration
此 cmdlet 创建并初始化迁移会话。 初始化在会话级别配置迁移设置。 如果未定义特定的设置参数,将使用默认设置。 注册会话后,可以将任务添加到会话并开始迁移。
添加迁移任务
- Add-SPMTTask
使用此 cmdlet 将新的迁移任务添加到已注册的迁移会话。 目前允许三种不同类型的任务:文件共享任务、SharePoint 任务和 JSON 定义的任务。 注意:不允许重复任务。
删除任务
- Remove-SPMTTask
此 cmdlet 可用于从已注册的迁移会话中删除现有迁移任务。
开始迁移
- Start-SPMTMigration
此 cmdlet 可用于开始执行已注册的 SPMT 迁移。
返回当前会话对象
- Get-SPMTMigration
返回当前会话的 对象。 此 cmdlet 包括当前任务的状态和当前会话级别设置。 当前任务状态包括:- 已扫描文件数
- 已迁移文件数
- 任何迁移错误消息
停止当前迁移
- Stop-SPMTMigration
此 cmdlet 可用于取消当前迁移。
在控制台中显示迁移状态详细信息
- Show-SPMTMigration
如果在 NoShow 模式下启动迁移,运行 Show-SPMTMigration cmdlet 会在控制台中显示任务 ID、数据源位置、目标位置和迁移状态。 按 Ctrl+C 将返回到 NoShow 模式。
删除迁移会话
- Unregister-SPMTMigration
此 cmdlet 可用于删除迁移会话。
示例应用场景
示例 1: IT 管理员添加 SharePoint 本地任务,并在后台开始迁移。
#Define SharePoint 2013 data source#
$SourceSiteUrl = "http://YourOnPremSite/"
$OnPremUserName = "Yourcomputer\administrator"
$OnPremPassword = ConvertTo-SecureString -String "OnPremPassword" -AsPlainText -Force
$SPCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $OnPremUserName, $OnPremPassword
$SourceListName = "SourceListName"
#Define SharePoint target#
$SPOUrl = "https://contoso.sharepoint.com"
$UserName = "admin@contoso.onmicrosoft.com"
$PassWord = ConvertTo-SecureString -String "YourSPOPassword" -AsPlainText -Force
$SPOCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $PassWord
$TargetListName = "TargetListName"
#Define File Share data source#
$FileshareSource = "YourFileShareDataSource"
#Import SPMT Migration Module#
Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
#Register the SPMT session with SharePoint credentials#
Register-SPMTMigration -SPOCredential $SPOCredential -Force
#Add two tasks into the session. One is SharePoint migration task, and another is File Share migration task.#
Add-SPMTTask -SharePointSourceCredential $SPCredential -SharePointSourceSiteUrl $SourceSiteUrl -TargetSiteUrl $SPOUrl -MigrateAll
Add-SPMTTask -FileShareSource $FileshareSource -TargetSiteUrl $SPOUrl -TargetList $TargetListName
#Start Migration in the console. #
Start-SPMTMigration
示例 2:IT 管理员希望将迁移从后台“NoShow 模式”移到前台,并在 cmdlet 下运行,以便在控制台中显示迁移进度。
Show-SPMTMigration
示例 3:IT 管理员希望通过加载 .csv 文件来执行批量迁移。 此示例中的示例文件是 SPMT.csv。
Load CSV;
$csvItems = import-csv "C:\spmt.csv" -Header c1,c2,c3,c4,c5,c6
ForEach ($item in $csvItems)
{
Write-Host $item.c1
Add-SPMTTask -FileShareSource $item.c1 -TargetSiteUrl $item.c4 -TargetList $item.c5 -TargetListRelativePath $item.c6
}
spmt.csv文件中定义了两个迁移任务。
D:\MigrationTest\Files\Average_1M\c,,,https://SPOSite.sharepoint.com,Documents,Test
C:\work\Powershell\negative,,,https://SPOSite.sharepoint.com/,Documents,DocLibrary_SubfolderName
通过加载一个JSON文件进行批量迁移的代码片段:
#Load JSON:
$jsonItems = Get-Content -Raw -Path "C:\spmt.json" | ConvertFrom-Json
ForEach ($taskItem in $jsonItems.Tasks)
{
$jsonString = ConvertTo-Json $taskItem -Depth 100
Add-SPMTTask -JsonDefinition $jsonString -SharePointSourceCredential $onpremCredential
}
spmt.json文件中定义了三个迁移任务。
{
"Tasks":[
{
"SourcePath":"http://On-prem/sites/test",
"TargetPath":"https://YourSPO.sharepoint.com",
"Items":{
"Lists":[
{
"SourceList":"list-01",
"TargetList":"list-01"
}
],
"SubSites":[
]
}
},
{
"SourcePath":"http://On-prem/sites/test",
"TargetPath":"https://YourSPO.sharepoint.com",
"Items":{
"Lists":[
{
"SourceList":"list-02",
"TargetList":"list-02"
}
],
"SubSites":[
]
}
},
{
"SourcePath":"http://On-prem/sites/test",
"TargetPath":"https://YourSPO.sharepoint.com",
"Items":{
"Lists":[
{
"SourceList":"doclib-01",
"TargetList":"doclib-01"
}
],
"SubSites":[
]
}
}
]
}
示例 4:显示迁移进度
这些示例展示如何显示迁移项目的进度。 Get-SPMTMigration 返回当前会话的对象。 它包括当前任务状态和当前会话级别设置。 当前任务的状态包括:
- 扫描的文件计数。
- 筛选出的文件计数。
- 已迁移的文件计数。
- 失败文件的计数。
- 当前任务的迁移进度 (0 ~ 100) 。
- 当前任务状态。
- 迁移错误消息(如果有)。
# Start migration in the background
Start-SPMTMigration -NoShow
# Get the object of current migration
$session = Get-SPMTMigration
# Query migration status every 5 seconds until migration is finished
while ($session.Status -ne "Finished")
{
Write-Host $session.Status
# Query migration progress of each tasks
Foreach ($taskStatus in $session.StatusOfTasks)
{
$taskStatus.MigratingProgressPercentage
}
Start-Sleep -Seconds 5
}