本节中的信息可以帮助您确定使用 Windows Server 迁移工具 cmdlet 进行的迁移是成功还是失败。如果失败,您可以使用此部分中的信息帮助您调查失败原因。

迁移疑难解答

Windows Server 迁移工具部署日志文件位于 %windir%\Logs\SmigDeploy.log 中。其他 Windows Server 迁移工具日志文件是在以下位置创建的。

  • %windir%\Logs\ServerMigration.log

  • 在 Windows Server 2008 和 Windows Server 2008 R2 上:%localappdata%\SvrMig\Log

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

如果在前面的位置中无法创建迁移日志文件,则在 %temp% 中创建 ServerMigration.logSmigDeploy.log,在 %windir%\System32 中创建其他日志。

查看 Windows Server 迁移工具结果对象的内容

所有 Windows Server 迁移工具 cmdlet 都作为对象返回结果。可以保存结果对象并查询它们,以获取关于已迁移的设置和数据的详细信息。对于其他 Windows PowerShell 命令和脚本,还可以使用结果对象作为输入。

结果对象描述

Windows Server 迁移工具 Import-SmigServerSettingExport-SmigServerSetting cmdlet 在 MigrationResult 对象列表中返回结果。每个 MigrationResult 对象都包含关于 cmdlet 所处理的数据或设置的信息、操作的结果以及任何相关的错误或警告消息。下表描述某个 MigrationResult 对象的属性。

属性名称类型定义

ItemType

枚举

已迁移项目的类型。值包括 FileFolderRegistryKeyShareEncryptedFile

ID

字符串

已迁移项目的 ID。值的示例包括 Local UserLocal GroupDHCP

成功

布尔型

如果迁移成功,则会显示值 True;否则,将显示 False

DetailsList

列出 <MigrationResultDetails>

MigrationResultDetails 对象列表。

Send-SmigServerDataReceive-SmigServerData cmdlet 会在 MigrationDataResult 对象列表中返回结果。每个 MigrationDataResult 对象都包含关于 cmdlet 所处理的数据或共享的信息、操作的结果、任何错误或警告消息以及其他相关信息。下表描述某个 MigrationDataResult 对象的属性。

属性名称类型定义

ItemType

枚举

已迁移项目的类型。值包括 FileFolderShareEncrypted File

SourceLocation

字符串

项目的源位置,显示为路径名。

DestinationLocation

字符串

项目的目标位置,显示为路径名。

成功

布尔型

如果迁移成功,则会显示值 True;否则,将显示 False

大小

整数

项目大小(以字节为单位)。

ErrorDetails

列出 <MigrationResultDetails>

单个 MigrationResultDetails 对象。

错误

枚举

已发生错误的错误枚举。

WarningMessageList

列出<字符串>

警告消息列表。

下表描述 MigrationResult 对象和 MigrationDataResult 对象公用的 MigrationResultDetails 对象内的对象属性。

属性名称类型定义

Id

字符串

与该项目相关的迁移设置的名称。值的示例包括 IPConfigDNS。对于数据迁移,此属性为空。

消息

列出<字符串>

详细事件消息列表。

DetailCode

整数

与每个事件消息关联的错误或警告代码。

严重性

枚举

事件的严重性(如果事件已发生)。值的示例包括 InformationErrorWarning

标题

字符串

结果对象的标题。值的示例包括 IP 配置的 NIC 物理地址,或本地用户迁移的用户名。

示例

以下示例显示如何在变量中存储结果对象的列表,然后在迁移完成之后使用查询中的变量返回结果对象的内容。

将结果对象的列表存储为查询的一个变量
  1. 若要运行某个 cmdlet 并将结果保存在变量中,请采用以下格式键入命令,然后按 Enter

    $VariableName = $(Cmdlet)

    以下是一个示例。

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

    此命令会运行指定了几个参数的 Import-SmigServerSetting cmdlet,然后在变量 ImportResult 中保存结果对象。

  2. Import-SmigServerSetting cmdlet 完成其操作之后,通过采用以下格式键入命令,然后按 Enter 来返回结果对象中包含的信息。

    $VariableName

    在以下示例中,会将变量命名为 ImportResult

    $ImportResult

    此命令会返回结果对象中所包含的信息,这些结果对象是在步骤 1 中所示的示例中由 Import-SmigServerSetting 返回的。以下是通过调用 ImportResult 变量显示的输出的一个示例。

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

    上述示例的每一行都是通过使用 Import-SmigServerSetting cmdlet 迁移的某个项目的一个迁移结果。列标题名称是 MigrationResult 对象的属性。可以将这些属性合并到另一个命令中来返回关于结果对象的更多详细信息,如步骤 3 及以后步骤中的示例所示。

  3. 若要在列表中显示所有结果对象的某个特定属性,请采用以下格式键入命令,然后按 Enter

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

    以下是一个示例。

    $importResult | Select-Object -ExpandProperty DetailsList
  4. 可以通过使用 Windows PowerShell cmdlet 运行更多高级查询来分析结果对象。以下是示例。

    • 以下命令仅返回 ID 为 Local User 的结果对象的那些详细信息。

      $ImportResult | Where-Object { $_.ID -eq "Local User" } | Select-Object -ExpandProperty DetailsList
    • 以下命令仅返回 ID 为 Local User 的结果对象的那些详细信息,该 ID 的消息严重性等于 Warning

      $ImportResult | Where-Object { $_.ID -eq "Local User" } | Select-Object -ExpandProperty DetailsList | ForEach-Object { if ($_.Severity -eq "Warning") {$_} }
    • 以下命令仅返回 ID 为 Local User 的结果对象的详细信息,该 ID 还具有标题 Remote Desktop Users

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

有关查询结果的详细信息

有关在上述示例中使用的 cmdlet 的详细信息,请参阅以下附加资源。

  • Microsoft 脚本中心网站上的 Where-Object (https://go.microsoft.com/fwlink/?LinkId=134853)(可能为英文网页)。

  • Microsoft 脚本中心网站上的 Select-Object (https://go.microsoft.com/fwlink/?LinkId=134858)(可能为英文网页)。

  • Microsoft 脚本中心网站上的 ForEach-Object (https://go.microsoft.com/fwlink/?LinkId=134860)(可能为英文网页)

有关 Windows PowerShell 脚本技术的详细信息,请参阅 Microsoft 脚本中心网站上的使用 Windows PowerShell 可以做什么?– 脚本技术 (https://go.microsoft.com/fwlink/?LinkId=134862)(可能为英文网页)。