Eseguire la migrazione a SharePoint con PowerShell

Questo articolo descrive i nuovi cmdlet di PowerShell basati sul motore di migrazione dello strumento di migrazione di SharePoint (SPMT). Possono essere usati per spostare i file dalle raccolte documenti e dagli elementi di elenco locali di SharePoint 2010 e SharePoint 2013 e dalle condivisioni file a Microsoft 365. Per informazioni su tutti i cmdlet di PowerShell correnti relativi alla migrazione di SharePoint, vedere le informazioni di riferimento sui cmdlet dello strumento di migrazione di Microsoft SharePoint.

I cmdlet di PowerShell offrono le stesse funzionalità dello Strumento di migrazione di SharePoint.

Nota

Questi cmdlet di PowerShell non sono attualmente disponibili per gli utenti di Office 365 gestiti da 21Vianet in Cina.

Requisiti di sistema

Descrizione Consiglio
CPU Processore Quad core a 64 bit o superiore
RAM 16 GB
Risorsa di archiviazione locale Disco rigido: 150 GB di spazio libero
Sistema operativo Windows Server 2016 Standard o Datacenter
Windows Server 2012 R2
Windows 10 Client
.NET Framework 4.6.2
Microsoft Visual C++ 2015 Redistributable Obbligatorio per la migrazione di OneNote

Importante

PowerShell 5.0x e .NET Framework 4.6.2 o versione successiva sono necessari per supportare la migrazione di percorsi di file fino a 400 caratteri.

Requisiti minimi (possibile rallentamento delle prestazioni)

Descrizione Requisito minimo
CPU Processore dual core 1.4 GHz a 64 bit o superiore
RAM 8 GB
Risorsa di archiviazione locale Disco rigido: 150 GB di spazio libero
Schede di rete Connessione Internet ad alta velocità
Sistema operativo Windows Server 2008 R2
Windows 7
Windows 8 o 8.1
.NET Framework 4.6.2
Microsoft Visual C++ 2015 Redistributable Obbligatorio per la migrazione di OneNote.
PowerShell PowerShell 5.x necessario per supportare la migrazione di percorsi di file fino a 400 caratteri. PowerShell 6.0 o versione successiva non è supportato.

Prima di iniziare

  1. Effettuare il provisioning di Microsoft 365 con l'active directory esistente o una delle altre opzioni per l'aggiunta di account a Microsoft 365. Per altre informazioni, vedere Integrazione di Microsoft 365 con ambienti locali e Aggiungere utenti a Microsoft 365 Apps for business.

  2. Aprire la cartella:

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

    Controllare di avere DLLs al suo interno; se si usa OneDrive, è possibile che sia necessario copiare la cartella WindowsPowershell in OneDrive/Documents.

  3. Da questa posizione, eseguire il comando di PowerShell seguente:

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

Creare e inizializzare una sessione di migrazione

  • Register-SPMTMigration
    Questo cmdlet crea e quindi inizializza una sessione di migrazione. L'inizializzazione configura le impostazioni di migrazione a livello di sessione. Se non sono definiti parametri di impostazione specifici, verranno usate le impostazioni predefinite. Dopo aver registrato una sessione, è possibile aggiungere un'attività alla sessione e avviare la migrazione.

Aggiungere un'attività di migrazione

  • Add-SPMTTask
    Usare questo cmdlet per aggiungere una nuova attività di migrazione alla sessione di migrazione registrata. Attualmente sono consentiti tre diversi tipi di attività: attività di condivisione file, attività di SharePoint e attività definita JSON. Nota: le attività duplicate non sono consentite.

Rimuovere un'attività

  • Remove-SPMTTask
    Questo cmdlet consente di rimuovere un'attività di migrazione esistente dalla migrazione registrata.

Avviare la migrazione

Restituire l'oggetto della sessione corrente

  • Get-SPMTMigration
    Restituisce l'oggetto della sessione corrente. Questo cmdlet include lo stato delle attività correnti e le impostazioni correnti a livello di sessione. Lo stato corrente dell'attività include:
    • Numero di file analizzati
    • Numero di file migrati
    • Qualsiasi messaggio di errore di migrazione

Interrompere la migrazione corrente

Visualizzare i dettagli dello stato della migrazione nella console

  • Show-SPMTMigration
    Se si avvia la migrazione in modalità NoShow , l'esecuzione del cmdlet Show-SPMTMigration visualizzerà l'ID attività, la posizione dell'origine dati, il percorso di destinazione e lo stato della migrazione nella console. Premendo CTRL+C si tornerà alla modalità NoShow .

Rimuovere la sessione di migrazione

Scenari di esempio

Esempio 1: L'amministratore IT aggiunge un'attività locale di SharePoint e avvia la migrazione in background.

#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

Esempio 2: l'amministratore IT decide di portare in primo piano la migrazione dalla modalità "NoShow" in background ed esegue il cmdlet in modo da visualizzare l'avanzamento della migrazione nella console.

Show-SPMTMigration

Esempio 3: Il Amministrazione IT vuole eseguire una migrazione in blocco caricando un file .csv. Il file di esempio in questo caso è 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
}

Sono definite due attività di migrazione nel file 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

Frammenti di codice per la migrazione in blocco caricando un file 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
}

Sono definite tre attività di migrazione nel file 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":[

            ]
         }
      }
   ]
}

Esempio 4: visualizzare lo stato della migrazione

Questi esempi mostrano come visualizzare lo stato del progetto di migrazione. Get-SPMTMigration restituisce l'oggetto della sessione corrente. Include lo stato delle attività correnti e le impostazioni a livello di sessione corrente. Lo stato delle attività correnti include:

  • Numero di file analizzati.
  • Numero di file filtrati.
  • Numero di file migrati.
  • Numero di file non riusciti.
  • Stato della migrazione dell'attività corrente (0 ~ 100).
  • Stato dell'attività corrente.
  • Messaggi di errore di migrazione, se presenti.

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