Поделиться через


Миграция на SharePoint с помощью PowerShell

В этой статье описаны новые командлеты PowerShell на основе модуля миграции средства миграции SharePoint (SPMT). Их можно использовать для перемещения файлов из локальных библиотек документов SharePoint 2010 и SharePoint 2013 и элементов списков, а также файловых ресурсов в Microsoft 365. Сведения обо всех текущих командлетах PowerShell, связанных с миграцией SharePoint, см. в справочнике по командлетам Microsoft SharePoint Migration Tool.

Командлеты PowerShell имеют те же функциональные возможности, что и средство миграции SharePoint.

Примечание.

Эти командлеты PowerShell в настоящее время недоступны пользователям Office 365 под управлением 21Vianet в Китае.

Требования к системе

Описание Рекомендация
ЦП 64-разрядный четырехъядерный процессор (или более производительный)
ОЗУ 16 ГБ
Локальное хранилище Жесткий диск: 150 ГБ свободного места
Операционная система Windows Server 2016 Standard или Datacenter
Windows Server 2012 R2
Клиент Windows 10
.NET Framework 4.6.2
Распространяемый компонент Microsoft Visual C++ 2015 Требуется для переноса данных OneNote

Важно!

PowerShell 5.0x и платформа .NET Framework 4.6.2 или более поздней версии требуются для переноса путей к файлам до 400 символов.

Минимальные требования (низкая производительность)

Описание Минимальное требование
ЦП 64-разрядный двухъядерный процессор с частотой 1,4 ГГц (или более производительный)
ОЗУ 8 ГБ
Локальное хранилище Жесткий диск: 150 ГБ свободного места
Сетевая карта Высокоскоростное подключение к Интернету
Операционная система Windows Server 2008 R2
Windows 7
Windows 8 или 8.1
.NET Framework 4.6.2
Распространяемый компонент Microsoft Visual C++ 2015 Требуется для переноса данных OneNote.
PowerShell PowerShell 5.x требуется для поддержки миграции путей к файлам до 400 символов. PowerShell 6.0 или более поздней версии не поддерживается.

Перед началом работы

  1. Подготовьте microsoft 365 с помощью существующего каталога Active Directory или одного из других вариантов добавления учетных записей в Microsoft 365. Дополнительные сведения см. в разделах Интеграция Microsoft 365 с локальными средами и Добавление пользователей в Приложения Microsoft 365 для бизнеса.

  2. Откройте папку:

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

    Убедитесь в том, что в ней есть библиотеки DLL. Если вы используете OneDrive, возможно, потребуется скопировать папку WindowsPowershell в OneDrive или документы.

  3. Из этого расположения запустите следующую команду PowerShell

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

Создание и инициализация сеанса миграции

  • Register-SPMTMigration
    Этот командлет создает и инициализирует сеанс миграции. Инициализация настраивает параметры миграции на уровне сеанса. Если конкретные параметры не определены, будут использоваться параметры по умолчанию. После регистрации сеанса можно добавить задачу в сеанс и начать миграцию.

Добавление задачи миграции

  • Add-SPMTTask
    Используйте этот командлет, чтобы добавить новую задачу миграции в зарегистрированный сеанс миграции. В настоящее время разрешены три различных типа задач: задача общей папки, задача SharePoint и определяемая задача JSON. Примечание. Повторяющиеся задачи не допускаются.

Удаление задачи

  • Remove-SPMTTask
    Используйте этот командлет для удаления существующей задачи миграции из зарегистрированного сеанса миграции.

Начало миграции

  • Start-SPMTMigration
    Этот командлет запустит зарегистрированную миграцию SPMT.

Возврат объекта текущего сеанса

  • Get-SPMTMigration
    Возвращает объект текущего сеанса. Этот командлет включает состояние текущих задач и параметры текущего уровня сеанса. Текущее состояние задачи включает в себя:
    • количество проверенных файлов;
    • количество перенесенных файлов;
    • возможные сообщения об ошибках миграции.

Остановка текущей миграции

  • Stop-SPMTMigration
    Этот командлет отменит текущую миграцию.

Отображение сведений о состоянии миграции в консоли

  • Show-SPMTMigration
    При запуске миграции в режиме NoShow командлет Show-SPMTMigration отобразит идентификатор задачи, расположение источника данных, целевое расположение и состояние миграции в консоли. Нажатие клавиш CTRL+C вернется в режим NoShow .

Удаление сеанса миграции

  • Unregister-SPMTMigration
    Используйте этот командлет для удаления сеанса миграции.

Примеры сценариев

Пример 1. ИТ-администратор добавляет локальную задачу 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. ИТ-администратор хочет вывести миграцию из фонового режима NoShow и запускает указанный ниже командлет, чтобы ход выполнения миграции отображался в консоли.

Show-SPMTMigration

Пример 3. ИТ-Администратор хочет выполнить массовую миграцию, загрузив файл .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
}