Condividi tramite


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.

Soluzione alternativa per un problema di percorso lungo

Quando si usa SPMT PowerShell, è possibile che si verifichino errori di analisi nei file di origine con percorsi più lunghi di 260 caratteri. Per risolvere questo problema, è possibile modificare il Registro di sistema per consentire a PowerShell di leggere i file di percorso lungo.

Aprire Registra Editor, passare a "Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework", aggiungere una nuova chiave "AppContext". Aggiungere quindi 2 valori stringa sotto la chiave.

  • Nome valore: Switch.System.IO.BlockLongPaths Dati valore: false

  • Nome valore: Switch.System.IO.UseLegacyPathHandling Dati valore: false

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. Assicurarsi di avere DLL al suo interno. Se si usa OneDrive, è necessario copiare la cartella WindowsPowershell in $env:UserProfile\OneDrive - Microsoft\Documents.

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

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

Creare e inizializzare una sessione di migrazione

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

Aggiungere un'attività di migrazione

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à

Questo cmdlet consente di rimuovere un'attività di migrazione esistente dalla migrazione registrata.

Avviare la migrazione

Questo cmdlet avvia la migrazione SPMT registrata.

Restituire l'oggetto della sessione corrente

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:

S - Conteggio dei file analizzati

  • Numero di file migrati
    • Qualsiasi messaggio di errore di migrazione

Interrompere la migrazione corrente

Questo cmdlet annulla la migrazione corrente.

Visualizzare i dettagli dello stato della migrazione nella console

Se si avvia la migrazione in modalità NoShow , l'esecuzione del cmdlet Show-SPMTMigration visualizza l'ID attività, il percorso dell'origine dati, il percorso di destinazione e lo stato della migrazione nella console. Se si seleziona CTRL+C, la visualizzazione viene visualizzata in modalità NoShow .

Rimuovere la sessione di migrazione

Utilizzare questo cmdlet per eliminare 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 vuole portare la migrazione dalla "modalità NoShow" in background in primo piano ed eseguire sotto il cmdlet in modo che lo stato di avanzamento della migrazione venga visualizzato 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
}