PowerShell을 사용하여 SharePoint로 마이그레이션Migrate to SharePoint using PowerShell

이 문서에서는 SPMT(SharePoint 마이그레이션 도구) 마이그레이션 엔진을 기반으로 하는 새 PowerShell cmdlet에 대해 설명합니다. 이 cmdlet은 SharePoint 2010 및 SharePoint 2013 온-프레미스 문서 라이브러리, 목록 항목 및 파일 공유의 파일을 Microsoft 365로 이동하는 데 사용할 수 있습니다. SharePoint 마이그레이션과 관련된 모든 최신 PowerShell cmdlet에 대한 자세한 내용은 Microsoft SharePoint 마이그레이션 도구 cmdlet 참고 자료를 참조하세요.This article is about the new PowerShell cmdlets based on the SharePoint Migration Tool (SPMT) migration engine. They can be used to move files from SharePoint 2010 and SharePoint 2013 on-premises document libraries and list items, and file shares to Microsoft 365. For information on all current PowerShell cmdlets relating to SharePoint migration, please see the Microsoft SharePoint Migration Tool cmdlet reference.

PowerShell cmdlet은 SharePoint 마이그레이션 도구와 동일한 기능을 제공합니다.The PowerShell cmdlets provide the same functionalities as the SharePoint Migration Tool.

참고

중국의 21Vianet이 운영하는 Office 365 사용자는 현재 PowerShell cmdlet을 사용할 수 없습니다. 또한 데이터 트러스티 German Telekom 을 사용하는 독일 클라우드의 Microsoft 365 사용자도 사용할 수 없습니다. 하지만 데이터 위치가 독일 데이터 센터에 있지 않은 독일의 사용자는 사용할 수 있습니다.These PowerShell cmdlets are currently not available for users of Office 365 operated by 21Vianet in China. They are also not available for users of Microsoft 365 with the German cloud using the data trustee, German Telekom. However, they are supported for users in Germany whose data location is not in the German datacenter.

시스템 요구 사항System requirements

최상의 성능을 얻기 위한 권장 요구 사항Recommended requirements for best performance

설명Description 권장 사항Recommendation
CPUCPU 64비트 쿼드 코어 프로세서 이상64-bit Quad core processor or better
RAMRAM 16GB16 GB
로컬 저장소Local Storage 하드 디스크: 150GB의 사용 가능한 공간Hard disk: 150 GB free space
운영 체제Operating system Windows Server 2016 Standard 또는 DatacenterWindows Server 2016 Standard or Datacenter
Windows Server 2012 R2Windows Server 2012 R2
Windows 10 클라이언트Windows 10 client
.NET Framework 4.6.2.NET Framework 4.6.2
Microsoft Visual C++ 2015 재배포 가능Microsoft Visual C++ 2015 Redistributable OneNote 마이그레이션에 필요합니다.Required for OneNote migration

중요

400자 이내의 파일 경로 마이그레이션을 지원하려면 PowerShell 5.0 및 .NET Framework 4.6.2 이상이 필요합니다.PowerShell 5.0 and .NET Framework 4.6.2 or higher are required to support the migration of file paths of up to 400 characters.

최소 요구 사항(성능 저하가 예상됨)Minimum requirements (expect slow performance)

설명Description 최소 요구 사항Minimum requirement
CPUCPU 64비트 1.4GHz 2코어 프로세서 이상64-bit 1.4 GHz 2-core processor or better
RAMRAM 8GB8 GB
로컬 저장소Local Storage 하드 디스크: 150GB의 사용 가능한 공간Hard disk: 150 GB free space
네트워크 카드Network card 고속 인터넷 연결High-speed Internet connection
운영 체제Operating system Windows Server 2008 R2Windows Server 2008 R2
Windows 7Windows 7
Windows 8 또는 8.1Windows 8 or 8.1
.NET Framework 4.6.2.NET Framework 4.6.2
Microsoft Visual C++ 2015 재배포 가능Microsoft Visual C++ 2015 Redistributable OneNote 마이그레이션에 필요합니다.Required for OneNote migration.
PowerShellPowerShell 400자 이내의 파일 경로 마이그레이션을 지원하려면 PowerShell 5.0 이상이 필요합니다.PowerShell 5.0 or higher required to support migration of file paths of up to 400 characters.

시작하기 전에Before you begin

  1. 기존 Active Directory 또는 Microsoft 365에 계정을 추가하는 데 사용할 수 있는 다른 옵션으로 Microsoft 365를 프로비전합니다. 자세한 내용은 온-프레미스 환경과 Microsoft 365 통합비즈니스용 Microsoft 365 앱에 사용자 추가를 참조하세요.Provision your Microsoft 365 with either your existing active directory or one of the other options for adding accounts to Microsoft 365. See Microsoft 365 integration with on-premises environments and Add users to Microsoft 365 Apps for business for more information.

  2. 폴더 열기:Open the folder:

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

    DLL이 포함되어 있는지 확인하세요. OneDrive를 사용하는 경우 WindowsPowershell 폴더를 OneDrive /문서로 복사해야 할 수도 있습니다.Make sure you have DLLs inside of it, if you're using OneDrive you may need to copy the WindowsPowershell Folder into OneDrive / Documents.

  3. 이 위치에서 다음 PowerShell 명령을 실행합니다.From this location, run the following PowerShell command

    Import-Module Microsoft.SharePoint.MigrationTool.PowerShell
    

마이그레이션 세션 만들기 및 초기화Create and initialize a migration session

  • Register-SPMTMigrationRegister-SPMTMigration
    이 cmdlet은 마이그레이션 세션을 만든 후 초기화합니다. 초기화 중에 세션 수준에서 마이그레이션 설정이 구성됩니다. 특정 설정 매개 변수를 정의하지 않은 경우 기본 설정이 사용됩니다. 세션이 등록된 후 세션에 작업을 추가하고 마이그레이션을 시작할 수 있습니다.This cmdlet creates and then initializes a migration session. The initialization configures migration settings at the session level. If no specific setting parameters are defined, default settings will be used. After a session is registered, you can add a task to the session and start migration.

마이그레이션 작업 추가Add a migration task

  • Add-SPMTTaskAdd-SPMTTask
    이 cmdlet을 사용하여 등록된 마이그레이션 세션에 새 마이그레이션 작업을 추가합니다. 현재, 3가지 다른 유형의 작업, 즉 파일 공유 작업, SharePoint 작업 및 JSON 정의 작업이 허용됩니다. 참고: 중복된 작업은 허용되지 않습니다. Use this cmdlet to add a new migration task to the registered migration session. Currently there are three different types of tasks allowed: File share task, SharePoint task and JSON defined task. Note: Duplicate tasks are not allowed.

작업 제거Remove a task

  • Remove-SPMTTaskRemove-SPMTTask
    이 cmdlet을 사용하여 등록된 마이그레이션에서 기존 마이그레이션 작업을 제거합니다.Use this cmdlet to remove an existing migration task from the registered migration.

마이그레이션 시작Start your migration

현재 세션의 개체 반환Return the object of current session

  • Get-SPMTMigrationGet-SPMTMigration
    현재 세션의 개체를 반환합니다. 여기에는 현재 작업의 상태와 현재 세션 수준 설정이 포함됩니다. 현재 작업 상태에는 다음이 포함됩니다. Return the object of the current session. This includes the status of current tasks and current session level settings. Current task status includes:
    • 검색한 파일의 수Count of scanned files
    • 마이그레이션한 파일의 수Count of migrated files
    • 마이그레이션 오류 메시지Any migration error messages

현재 마이그레이션 중지Stop your current migration

콘솔의 마이그레이션 상태 세부 정보 표시Show your migration status details in the console

  • Show-SPMTMigrationShow-SPMTMigration
    NoShow 모드에서 마이그레이션을 시작하는 경우 Show-SPMTMigration cmdlet을 실행하면 콘솔에 작업 ID, 데이터 원본 위치, 대상 위치 및 마이그레이션 상태가 표시됩니다. Ctrl+C를 누르면 NoShow 모드로 돌아갑니다. If you start the migration in NoShow mode, running the Show-SPMTMigration cmdlet will display the task ID, data source location, target location and migration status in the console. Pressing Ctrl+C will return to NoShow mode.

마이그레이션 세션 제거Remove the migration session

샘플 시나리오Sample Scenarios

예제 1: IT 관리자는 SharePoint 온-프레미스 작업을 추가하고 백그라운드에서 마이그레이션을 시작합니다.Example 1: IT admin adds a SharePoint on-prem task and starts migration in the background.

#Define SharePoint 2013 data source#
$Global:SourceSiteUrl = "http://YourOnPremSite/"
$Global:OnPremUserName = "Yourcomputer\administrator"
$Global:OnPremPassword = ConvertTo-SecureString -String "OnPremPassword" -AsPlainText -Force
$Global:SPCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Global:OnPremUserName, $Global:OnPremPassword
$Global:SourceListName = "SourceListName"

#Define SharePoint target#
$Global:SPOUrl = "https://contoso.sharepoint.com"
$Global:UserName = "admin@contoso.onmicrosoft.com"
$Global:PassWord = ConvertTo-SecureString -String "YourSPOPassword" -AsPlainText -Force
$Global:SPOCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Global:UserName, $Global:PassWord
$Global:TargetListName = "TargetListName"

#Define File Share data source#
$Global:FileshareSource = "YourFileShareDataSource"

#Import SPMT Migration Module#
Import-Module Microsoft.SharePoint.MigrationTool.PowerShell

#Register the SPMT session with SharePoint credentials#
Register-SPMTMigration -SPOCredential $Global:SPOCredential -Force

#Add two tasks into the session. One is SharePoint migration task, and another is File Share migration task.#
Add-SPMTTask -SharePointSourceCredential $Global:SPCredential -SharePointSourceSiteUrl $Global:SourceSiteUrl  -TargetSiteUrl $Global:SPOUrl -MigrateAll
Add-SPMTTask -FileShareSource $Global:FileshareSource -TargetSiteUrl $Global:SPOUrl -TargetList $Global:TargetListName

#Start Migration in the console. #
Start-SPMTMigration

예제 2: IT 관리자는 백그라운드 "NoShow 모드"에서 포그라운드로 마이그레이션을 전환하고 cmdlet 아래에 실행하여 콘솔에서 마이그레이션 진행 상황을 보려고 합니다.Example 2: IT admin wants to bring the migration from the background "NoShow mode" to the foreground, run below the cmdlet, so he can see the migration progress in the console.

Show-SPMTMigration

예제 3: IT 관리자가 .csv 파일을 로드하여 대량 마이그레이션을 하려고 합니다.Example 3: IT Admin wants to do a bulk migration by loading a .csv file. 이 예제에서 샘플 파일은 SPMT.csv입니다.The sample file in this example is 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 파일에는 두 가지 마이그레이션 작업이 정의되어 있습니다.Two migration tasks are defined in the file of 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 파일을 로드하여 대량 마이그레이션을 위한 코드 조각:Code snippets for bulk migration by loading one JSON file:

#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 파일에는 세 가지 마이그레이션 작업이 정의되어 있습니다.Three migration tasks are defined in the file of 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":[

            ]
         }
      }
   ]
}