Windows Server Migration Tools and Guides

Migration documentation and tools ease migrating server roles, operating system settings, and data from an existing server that is running Windows Server® 2003, Windows Server 2008, or Windows Server 2008 R2 to a computer that is running Windows Server 2008 R2.

By using migration guides linked from this topic—and where it is appropriate, Windows Server Migration Tools—to migrate roles, you can simplify deployment of new servers (including those that are running the Server Core installation option of Windows Server 2008 R2, and virtual servers), reduce migration downtime, increase accuracy of the migration process, and help eliminate conflicts that could otherwise occur during the migration process.

Most of the migration documentation and tools featured on the Windows Server Migration Portal support cross-architecture migrations (x86-based to x64-based computing platforms), migrations between physical and virtual environments, and migrations between both the full and Server Core installation options of the Windows Server operating system, where available.

Windows Server 2008 R2 Migration Guides

Step-by-step migration guides for supported server roles, features, operating system settings, and data are available on the Windows Server 2008 R2 TechCenter (http://go.microsoft.com/fwlink/?LinkID=128554).

Windows Server Migration Tools

Windows Server Migration Tools is a feature that is available for installation on computers that are running Windows Server 2008 R2 by using the Add Features Wizard in Server Manager. Windows Server Migration Tools can be removed from Windows Server 2008 R2 by using the Remove Features Wizard.

To migrate roles, features, and other data by using Windows Server Migration Tools, you must also deploy Windows Server Migration Tools on source servers from which you want to migrate data. Windows Server Migration Tools is deployed on source servers by creating a deployment folder on a computer that is running Windows Server 2008 R2, and then copying it to the pre-Windows Server 2008 R2 source computer operating systems shown in the table in this topic.

You must be a member of the Administrators group on the computer on which you want to install, register, or use Windows Server Migration Tools. Additionally, if you are running Windows Server Migration Tools on servers that are running either Windows Server 2008 or Windows Server 2008 R2, you must run Windows Server Migration Tools with elevated user rights. To do this, click Start, click Administrative Tools, right-click Windows Server Migration Tools, and then click Run as administrator.

Complete instructions for the installation, configuration, and removal of Windows Server Migration Tools are available on the World Wide Web, in the Windows Server Migration Tools Installation, Access, and Removal (http://go.microsoft.com/fwlink/?LinkId=134763) step-by-step guide on the Windows Server 2008 R2 TechCenter.

Supported operating systems

The following table shows operating systems for which migration by using Windows Server Migration Tools is supported.

Source server processor | Source server operating systems | Destination server operating systems | Destination processor
x86- or x64-based | Windows Server 2003 | Windows Server 2008 R2 and Server Core | x64-based
x86- or x64-based | Windows Server 2003 R2 | Windows Server 2008 R2 and Server Core | x64-based
x86- or x64-based | Windows Server 2008 | Windows Server 2008 R2 and Server Core | x64-based
x64-based | Windows Server 2008 R2 | Windows Server 2008 R2 and Server Core | x64-based
x64-based | Windows Server 2008 R2 Server Core | Windows Server 2008 R2 and Server Core | x64-based
Notes
  • Foundation, Standard, Enterprise, and Datacenter editions of Windows Server are supported on both full and Server Core installation options, as either source or destination servers.
  • Migrations between physical operating systems and virtual operating systems are supported.
  • Migration from a source server to a destination server that is running an operating system in a different system UI language (that is, the installed language) than the source server is not supported. For example, you cannot use Windows Server Migration Tools to migrate roles, operating system settings, or data, from a computer that is running Windows Server 2008 in the French system UI language to a computer that is running Windows Server 2008 R2 in the German system UI language.
  • The system UI language is the language of the localized installation package that was used to set up the Windows operating system.
  • Both x86- and x64-based migrations are supported for Windows Server 2003 and Windows Server 2008. All editions of Windows Server 2008 R2 are 64-bit.
  • Roles that are running on Server Core installations of Windows Server 2008 cannot be migrated, because there is no .NET Framework available on Windows Server 2008 Server Core.


Overview of Migration Cmdlets

Windows Server Migration Tools includes five Windows PowerShell cmdlets that let you migrate some server roles, features, operating system settings, shares, and other data from computers that are running Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, or Windows Server® 2008 R2, or to computers that are running Windows Server 2008 R2. This topic identifies and describes the Windows PowerShell cmdlets that are part of Windows Server Migration Tools.

For a complete list of operating systems that are supported by Windows Server Migration Tools, see Windows Server Migration Tools and Guides in this Help.

Windows PowerShell

Cmdlets (pronounced command-lets) are built-in commands included with Windows PowerShell 2.0, installed by default as part of Windows Server 2008 R2. For more information about Windows PowerShell and how cmdlets work, see the Getting Started guide for Windows PowerShell. To open Getting Started, click Start, click All Programs, click Accessories, click Windows PowerShell 2.0, click Documents, open the folder for your locale, and then double-click GettingStarted.rtf.

Running Windows PowerShell as an administrator

Although Windows Server Migration Tools cmdlets work on servers that are running either Windows Server 2008 R2, Windows Server 2003, or Windows Server 2008, because Windows Server 2008 and Windows Server 2008 R2 include the User Account Control security feature, you must run Windows PowerShell with elevated user rights on those operating systems, even if you are already logged on to the computer as an administrator.

  • On computers that are running Windows Server 2003, open a Windows PowerShell session by clicking Start, clicking All Programs, opening the Windows PowerShell folder, and then clicking the Windows PowerShell shortcut.

  • On computers that are running Windows Server 2008, open a Windows PowerShell session with elevated user rights. To do this, click Start, click All Programs, open the Windows PowerShell folder, right-click the Windows PowerShell shortcut, and then click Run as administrator.

  • On computers that are running Windows Server 2008 R2, open a Windows PowerShell session with elevated user rights. To do this, click Start, click All Programs, click Accessories, open the Windows PowerShell folder, right-click Windows PowerShell, and then click Run as administrator.

Starting Windows Server Migration Tools

You can start Windows Server Migration Tools by using one of the following two procedures.

To start Windows Server Migration Tools from the Start menu

  1. On a computer that is running Windows Server 2008 R2, click Start, click Administrative Tools, right-click Windows Server Migration Tools, and then click Run as administrator.
To start Windows Server Migration Tools from a Windows PowerShell session

  1. Do one of the following.

    • On computers that are running Windows Server 2003, open a Windows PowerShell session by clicking Start, clicking All Programs, opening the Windows PowerShell folder, and clicking the Windows PowerShell shortcut.

    • On computers that are running Windows Server 2008, open a Windows PowerShell session with elevated user rights. To do this, click Start, click All Programs, open the Windows PowerShell folder, right-click the Windows PowerShell shortcut, and then click Run as administrator.

    • On computers that are running Windows Server 2008 R2, open a Windows PowerShell session with elevated user rights. To do this, click Start, click All Programs, click Accessories, open the Windows PowerShell folder, right-click Windows PowerShell, and then click Run as administrator.

  2. Load Windows Server Migration Tools into your Windows PowerShell session. To load Windows Server Migration Tools, type the following, and then press Enter.

    Add-PSSnapin Microsoft.Windows.ServerManager.Migration

Windows Server Migration Tools cmdlets

The following table describes the cmdlets that are available with Windows Server Migration Tools. After you install Windows Server Migration Tools by following the instructions that are provided in the Windows Server Migration Tools Installation, Access, and Removal (http://go.microsoft.com/fwlink/?LinkId=134763) step-by-step guide, you can obtain detailed Help about specific syntax, parameters, and usage guidelines for Windows Server Migration Tools cmdlets at any time.To obtain detailed Help, type Get-Help cmdlet_name -full in a Windows PowerShell session, in which cmdlet_name represents the name of the Windows Server Migration Tools cmdlet for which you want help.

Cmdlet name | Description
Export-SmigServerSetting | This cmdlet exports selected Windows features and operating system settings from computers that are running Windows Server 2003, Windows Server 2008, or Windows Server 2008 R2, and stores them in a migration store that users specify in the -Path parameter. Run the Import-SmigServerSetting cmdlet to import Windows features and operating system settings to a destination computer that is running Windows Server 2008 R2, from the migration store populated by the Export-SmigServerSetting cmdlet.
Import-SmigServerSetting | This cmdlet imports selected Windows features and operating system settings from a migration store that is identified in the -Path parameter, and applies them to the local computer. If the Windows features that you are migrating have not been installed, Import-SmigServerSetting automatically installs those Windows features and their dependencies.
Get-SmigServerFeature | This cmdlet lists the set of all Windows features that can be exported from a server, or imported from a migration store that is specified in the -Path parameter.
Send-SmigServerData | This cmdlet migrates folders, files, and associated permissions and share properties from the local server to a target server. Send-SmigServerData must be run on the source server at the same time that the Receive-SmigServerData cmdlet is running on the destination server.
Receive-SmigServerData | This cmdlet allows a target server to receive shares, folders, files, and associated permissions and share properties that are migrated from a source server. Receive-SmigServerData must be running on the destination server at the same time that the Send-SmigServerData cmdlet is running on the source server.


Troubleshooting Cmdlet-based Migration

Information in this section can help you determine whether migration by using Windows Server Migration Tools cmdlets succeeded or failed. If failures occurred, you can use information in this section to help you investigate the sources of failures.

Troubleshooting migration

The Windows Server Migration Tools deployment log file is located at %windir%\Logs\SmigDeploy.log. Additional Windows Server Migration Tools log files are created at the following locations.

  • %windir%\Logs\ServerMigration.log

  • On Windows Server 2008 and Windows Server 2008 R2: %localappdata%\SvrMig\Log

  • On Windows Server 2003: %userprofile%\Local Settings\Application Data\SvrMig\Log

If migration log files cannot be created in the preceding locations, ServerMigration.log and SmigDeploy.log are created in %temp%, and other logs are created in %windir%\System32.

Viewing the content of Windows Server Migration Tools result objects

All Windows Server Migration Tools cmdlets return results as objects. You can save result objects, and query them for more information about settings and data that were migrated. You can also use result objects as input for other Windows PowerShell commands and scripts.

Result object descriptions

The Windows Server Migration Tools Import-SmigServerSetting and Export-SmigServerSetting cmdlets return results in a list of MigrationResult objects. Each MigrationResult object contains information about the data or setting that the cmdlet processes, the result of the operation, and any related error or warning messages. The following table describes the properties of a MigrationResult object.

Property name | Type | Definition
ItemType | Enum | The type of migrated item. Values include File, Folder, RegistryKey, Share, and EncryptedFile.
ID | String | The ID of the migrated item. Examples of values include Local User, Local Group, and DHCP.
Success | Boolean | The value True is displayed if migration was successful; otherwise, False is displayed.
DetailsList | List <MigrationResultDetails> | A list of MigrationResultDetails objects.

Send-SmigServerData and Receive-SmigServerData cmdlets return results in a list of MigrationDataResult objects. Each MigrationDataResult object contains information about the data or share that the cmdlet processes, the result of the operation, any error or warning messages, and other related information. The following table describes the properties of a MigrationDataResult object.

Property name | Type | Definition
ItemType | Enum | The type of migrated item. Values include File, Folder, Share, and Encrypted File.
SourceLocation | String | The source location of the item, shown as a path name.
DestinationLocation | String | The destination location of the item, shown as a path name.
Success | Boolean | The value True is displayed if migration was successful; otherwise, False is displayed.
Size | Integer | The item size, in bytes.
ErrorDetails | List <MigrationResultDetails> | A single MigrationResultDetails object.
Error | Enum | Errors enumeration for errors that occurred.
WarningMessageList | List <String> | A list of warning messages.

The following table describes the properties of objects within the MigrationResultDetails object that are common to both MigrationResult and MigrationDataResult objects.

Property name | Type | Definition
Id | String | The name of the migration setting that is related to the item. Examples of values include IPConfig and DNS. This property is empty for data migration.
Messages | List <String> | A list of detailed event messages.
DetailCode | Integer | The error or warning code associated with each event message.
Severity | Enum | The severity of an event, if events occurred. Examples of values include Information, Error, and Warning.
Title | String | Title of the result object. Examples of values include NIC physical address for IP configuration, or user name for local user migration.

Examples

The following examples show how to store the list of the result objects in a variable, and then use the variable in a query to return the content of result objects after migration is complete.

To store a list of result objects as a variable for queries

  1. To run a cmdlet and save the result in variable, type a command in the following format, and then press Enter.

    $VariableName = $(Cmdlet)

    The following is an example.

    $ImportResult = $(Import-SmigServerSetting -FeatureId DHCP -User all -Group -Path D:\rmt\DemoStore -force –Verbose)

    This command runs the Import-SmigServerSetting cmdlet with several parameters specified, and then saves result objects in the variable ImportResult.

  2. After the Import-SmigServerSetting cmdlet has completed its operations, return the information contained in the result object by typing a command in the following format, and then pressing Enter.

    $VariableName

    In the following example, the variable is named ImportResult.

    $ImportResult

    This command returns information contained in the result objects that were returned by Import-SmigServerSetting in the example shown in step 1. The following is an example of the output that is displayed by calling the ImportResult variable.

               ItemType  ID                              Success  DetailsList
           --------  --                              -------  -----------
          OSSetting  Local User                         True  {Local User, Loc...
          OSSetting  Local Group                        True  {Local Group, Lo...
     WindowsFeature  DHCP                               True  {}

    Each line of the preceding sample is a migration result for an item that was migrated by using the Import-SmigServerSetting cmdlet. The column heading names are properties of MigrationResult objects. You can incorporate these properties into another command to return greater detail about result objects, as shown by examples in step 3 and forward.

  3. To display a specific property for all result objects in the list, type a command in the following format, and then press Enter.

    $<VariableName>| Select-Object -ExpandProperty <PropertyName>

    The following is an example.

    $importResult | Select-Object -ExpandProperty DetailsList

  4. You can run more advanced queries to analyze result objects by using Windows PowerShell cmdlets. The following are examples.

    • The following command returns only those details of result objects that have the ID Local User.

      $ImportResult | Where-Object { $_.ID -eq "Local User" } | Select-Object -ExpandProperty DetailsList
    • The following command returns only those details of result objects with an ID of Local User that have a message severity equal to Warning.

      $ImportResult | Where-Object { $_.ID -eq "Local User" } | Select-Object -ExpandProperty DetailsList | ForEach-Object { if ($_.Severity -eq "Warning") {$_} }
    • The following command returns only the details of result objects with an ID of Local User that also have the title Remote Desktop Users.

      $ImportResult | Where-Object { $_.ID -eq "Local Group" } | Select-Object -ExpandProperty DetailsList | ForEach-Object { if ($_.Title -eq "Remote Desktop Users") {$_} }

More information about querying results

For more information about the cmdlets that are used in the preceding examples, see the following additional resources.

  • Where-Object on the Microsoft Script Center Web site (http://go.microsoft.com/fwlink/?LinkId=134853).

  • Select-Object on the Microsoft Script Center Web site (http://go.microsoft.com/fwlink/?LinkId=134858).

  • ForEach-Object on the Microsoft Script Center Web site (http://go.microsoft.com/fwlink/?LinkId=134860)

For more information about Windows PowerShell scripting techniques, see What Can I Do With Windows PowerShell? – Scripting Techniques on the Microsoft Script Center Web site (http://go.microsoft.com/fwlink/?LinkId=134862).