Compartilhar via


Migrar para o SharePoint usando o PowerShell

Este artigo é sobre os novos cmdlets do PowerShell com base no motor de migração da Ferramenta de Migração do SharePoint (SPMT). Podem ser utilizados para mover ficheiros do SharePoint 2010 e bibliotecas de documentos no local do SharePoint 2013 e itens de lista e partilhas de ficheiros para o Microsoft 365. Para obter informações sobre todos os cmdlets atuais do PowerShell relacionados com a migração do SharePoint, veja a Referência do 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

Estes cmdlets do PowerShell não estão atualmente disponíveis para utilizadores de Office 365 operados pela 21Vianet na China.

Requisitos do sistema

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
Windows 10 cliente
.NET Framework 4.6.2
Microsoft Visual C++ 2015 Redistribuível Necessário para migração do OneNote

Importante

O PowerShell 5.0x e o .NET Framework 4.6.2 ou superior são necessários para suportar a migração de caminhos de ficheiros de até 400 carateres.

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 suportar a migração de caminhos de ficheiros de até 400 carateres. O PowerShell 6.0 ou superior não é suportado.

Solução para o problema de caminho longo

Ao utilizar o SPMT PowerShell, poderá deparar-se com falhas de análise em ficheiros de origem com caminhos com mais de 260 carateres. Para resolve este problema, pode modificar o registo do sistema para permitir que o PowerShell leia ficheiros de caminho longo.

Abra Registar Editor, navegue para "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework", adicione uma nova chave "AppContext". Em seguida, adicione 2 valores de Cadeia sob a chave.

  • Nome do Valor: Switch.System.IO.BlockLongPaths Dados do Valor: false

  • Nome do Valor: Switch.System.IO.UseLegacyPathHandling Dados do Valor: false

Antes de começar

  1. Aprovisione o Microsoft 365 com o active directory existente ou uma das outras opções para adicionar contas ao Microsoft 365. Para obter mais informações, consulte Integração do Microsoft 365 com ambientes no local e Adicionar utilizadores a Microsoft 365 Apps para Pequenos e Médios negócios.

  2. Abra a pasta : $env:UserProfile\Documents\WindowsPowerShell\Modules\Microsoft.SharePoint.MigrationTool.PowerShell. Certifique-se de que tem DLLs dentro do mesmo. Se estiver a utilizar o OneDrive, terá de copiar a Pasta windowsPowershell para $env:UserProfile\OneDrive - Microsoft\Documentso .

  3. Nesta localização, execute o seguinte comando do PowerShell:

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

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

Este cmdlet cria e, em seguida, inicializa uma sessão de migração. A inicialização configura as definições de migração ao nível da sessão. Se não forem definidos parâmetros de definição específicos, são utilizadas as predefinições. Depois de registar uma sessão, pode adicionar uma tarefa à sessão e iniciar a migração.

Adicionar uma tarefa de migração

Utilize este cmdlet para adicionar uma nova tarefa de migração à sessão de migração registada. Atualmente, existem três tipos diferentes de tarefas permitidas: tarefa de partilha de ficheiros, tarefa do SharePoint e tarefa definida por JSON. Nota: não são permitidas tarefas duplicadas.

Remover uma tarefa

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

Iniciar a migração

Este cmdlet inicia a migração SPMT registada.

Retornar o objeto de sessão atual

Devolve o objeto da sessão atual. Este cmdlet inclui a status das tarefas atuais e as definições atuais de nível de sessão. O status de tarefas atual inclui:

S – Contagem de ficheiros analisados

  • Contagem de arquivos migrados
    • Todas as mensagens de erro de migração

Interromper a migração atual

Este cmdlet cancela a migração atual.

Mostrar detalhes de status da migração no console

Se iniciar a migração no modo NoShow, a execução do cmdlet Show-SPMTMigration apresenta o ID da tarefa, a localização da origem de dados, a localização de destino e os status de migração na consola do . Selecionar Ctrl+C devolve o ecrã para o modo NoShow .

Remover a sessão de migração

Use este cmdlet para excluir a sessão de migração.

Cenários de exemplo

Exemplo 1: O administrador de TI adiciona uma tarefa do SharePoint no local e inicia a migração em segundo plano.

#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 quer colocar a migração em segundo plano "NoShow mode" em primeiro plano e executar abaixo do cmdlet para que o progresso da migração seja apresentado na consola do .

Show-SPMTMigration

Exemplo 3: O Administração de TI quer fazer uma migração em massa ao carregar um ficheiro de .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 devolve o objeto da sessão atual Inclui tarefas atuais status e definições de nível de sessão atuais.

O status das tarefas atuais inclui:

  • Uma contagem de ficheiros digitalizados.
  • Uma contagem de ficheiros filtrados.
  • Uma contagem de ficheiros migrados.
  • Uma contagem de ficheiros falhados.
  • O progresso da migração da tarefa atual (0 ~ 100).
  • A tarefa atual status.
  • Mensagens de erro de migração, se existirem.

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