Migrar para o SharePoint usando o PowerShell

Este artigo é sobre os novos cmdlets do PowerShell com base no mecanismo de migração do SPMT (Ferramenta de Migração do SharePoint). Eles podem ser usados para mover arquivos do SharePoint 2010 e do SharePoint 2013, bibliotecas de documentos locais e itens de lista e compartilhamentos de arquivos para o Microsoft 365. Para obter informações sobre todos os cmdlets atuais do PowerShell relacionados à migração do SharePoint, consulte a referência de cmdlet da Ferramenta de Migração do Microsoft SharePoint.

Os cmdlets do PowerShell fornecem as mesmas funcionalidades que a Ferramenta de Migração do SharePoint.

Observação

Atualmente, esses cmdlets do PowerShell não estão disponíveis para usuários do Office 365 operados pela 21Vianet na China.

Requisitos do sistema

Requisitos recomendados para obter o melhor desempenho

Descrição Recomendação
CPU Processador Quad core de 64 bits ou superior
RAM 16 GB
Armazenamento local Disco rígido: 150 GB de espaço livre
Sistema operacional Windows Server 2016 Standard ou Datacenter
Windows Server 2012 R2
Cliente do Windows 10
.NET Framework 4.6.2
Microsoft Visual C++ 2015 Redistribuível Necessário para migração do OneNote

Importante

O PowerShell 5.0x e .NET Framework 4.6.2 ou superior são necessários para dar suporte à migração de caminhos de arquivo de até 400 caracteres.

Requisitos mínimos (esperar um baixo desempenho)

Descrição Requisitos mínimos
CPU Processador de 2 núcleos 1.4 GHz de 64 bits ou superior
RAM 8 GB
Armazenamento local Disco rígido: 150 GB de espaço livre
Placa de rede Conexão com a Internet de alta velocidade
Sistema operacional Windows Server 2008 R2
Windows 7
Windows 8 ou 8.1
.NET Framework 4.6.2
Microsoft Visual C++ 2015 Redistribuível Necessário para migração do OneNote.
PowerShell O PowerShell 5.x necessário para dar suporte à migração de caminhos de arquivo de até 400 caracteres. Não há suporte para o PowerShell 6.0 ou superior.

Antes de começar

  1. Provisione seu Microsoft 365 com seu diretório ativo existente ou uma das outras opções para adicionar contas ao Microsoft 365. Consulte Integração do Microsoft 365 com ambientes locais e Adicionar usuários a Microsoft 365 Apps para Pequenos e Médios negócios para obter mais informações.

  2. Abra a pasta:

    $env:UserProfile\Documents\WindowsPowerShell\Modules\Microsoft.SharePoint.MigrationTool.PowerShell

    Certifique-se de ter DLLs dentro dele. Se estiver usando o OneDrive, pode ser necessário copiar a pasta WindowsPowershell para o OneDrive / Documentos.

  3. Deste local, execute o seguinte comando do PowerShell

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

Criar e iniciar uma sessão de migração

  • Register-SPMTMigration
    Esse cmdlet cria e inicializa uma sessão de migração. A inicialização configura as configurações de migração no nível da sessão. Se nenhum parâmetro de configuração específico for definido, as configurações padrão serão usadas. Depois que uma sessão for registrada, você pode adicionar uma tarefa à sessão e iniciar a migração.

Adicionar uma tarefa de migração

  • Add-SPMTTask
    Use este cmdlet para adicionar uma nova tarefa de migração à sessão de migração registrada. Atualmente, há três tipos diferentes de tarefas permitidas: tarefa de compartilhamento de arquivos, tarefa do SharePoint e tarefa definida por JSON. Observação: tarefas duplicadas não são permitidas.

Remover uma tarefa

  • Remove-SPMTTask
    Use este cmdlet para remover uma tarefa de migração existente da migração registrada.

Iniciar a migração

Retornar o objeto de sessão atual

  • Get-SPMTMigration
    Retorne o objeto da sessão atual. Isso inclui o status de tarefas atuais e as configurações atuais do nível da sessão. O status de tarefas atual inclui:
    • Contagem de arquivos examinados
    • Contagem de arquivos migrados
    • Todas as mensagens de erro de migração

Interromper a migração atual

Mostrar detalhes de status da migração no console

  • Show-SPMTMigration
    Se você iniciar a migração no modo NoShow, a execução do cmdlet Show-SPMTMigration exibirá a ID da tarefa, o local da fonte de dados, o local de destino e a migração status no console. Pressionar Ctrl+C retornará ao modo NoShow .

Remover a sessão de migração

Cenários de exemplo

Exemplo 1: o administrador de TI adiciona uma tarefa local do Microsoft Office SharePoint Online e inicia a migração em tela de fundo.

#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

Exemplo 2: o administrador de TI deseja trazer a migração do "modo NoShow" de tela de fundo para o primeiro plano e executar abaixo do cmdlet para que o andamento da migração seja mostrado no console.

Show-SPMTMigration

Exemplo 3: A Administração de TI deseja fazer uma migração em massa carregando um arquivo .csv. O arquivo de amostra neste exemplo é 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
}

Duas tarefas de migração são definidas no arquivo 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

Snippets de código para migração em massa carregando um arquivo 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
}

Três tarefas de migração são definidas no arquivo 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":[

            ]
         }
      }
   ]
}

Exemplo 4: exibir o progresso da migração

Esses exemplos mostram como exibir o andamento do seu projeto de migração. Get-SPMTMigration retorna o objeto da sessão atual. Inclui o status das tarefas atuais e as configurações atuais do nível da sessão. O status das tarefas atuais inclui:

  • Contagem de arquivos verificados
  • Contagem de arquivos filtrados
  • Contagem de arquivos migrados
  • Contagem de arquivos com falha
  • Progresso da migração da tarefa atual (0 ~ 100)
  • Status da tarefa atual
  • Mensagem de erro de migração, se houver.

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