日志文件

可以使用 用户状态迁移工具 (USMT) 5.0 日志监视迁移以及对错误和失败的迁移进行疑难解答。本主题介绍了可用于启用 USMT 日志的命令行选项,还介绍了一些新的 XML 元素,这些 XML 元素用于配置哪些类型的错误为致命错误,在发生这样的错误时应停止迁移,哪些类型的错误为非致命错误,应跳过该错误以便可以继续迁移。

日志命令行选项

ScanState 和 LoadState 日志

进度日志

列表文件日志

诊断日志

日志命令行选项

下表介绍了每个与日志相关的命令行选项,还提供了日志名称以及对每个日志所包含的信息类型的描述。

命令行选项 文件名 说明

/l [Path\]FileName

Scanstate.log 或 LoadState.log

指定 ScanState.log 或 LoadState.log 的路径和文件名。

/progress: [Path\]FileName

指定进度日志的路径和文件名。

以完成百分比的形式提供有关迁移状态的信息。

/v: [VerbosityLevel]

不适用

请参阅 ScanState 语法中的“监控选项”部分。

/listfiles [Path\]FileName

指定列表文件日志的路径和文件名。

提供已迁移文件的列表。

将环境变量 MIG_ENABLE_DIAG 设置为指向 XML 文件的路径。

USMTDiag.xml

诊断日志中包含详细的系统环境信息、用户环境信息,以及有关收集的迁移单元 (migunit) 及其内容的信息。

note备注
请勿在 StorePath 中存储任何日志文件。否则,日志将在运行 USMT 时被覆盖。

ScanState 和 LoadState 日志

ScanState 和 LoadState 日志是在运行 ScanState 和 LoadState 工具时创建的文本文件。可以使用这些日志协助监视你的迁移。日志的内容取决于使用的命令行选项及指定的详细级别。有关详细级别的详细信息,请参阅 ScanState 语法中的“监控选项”。

进度日志

可以使用 /progress 选项创建进度日志。Microsoft System Center Operations Manager 2007 等外部工具可用于分析进度日志,以更新你的监视系统。每行中的前三个字段都是固定字段,如下所示:

  • **日期:**以 dayshortNameOfTheMonthyear 格式显示的日期。例如:08 Jun 2006。

  • **本地时间:**以hrs:minutes:seconds 格式显示的时间(使用 24 小时制)。例如:13:49:13。

  • **迁移时间:**运行 USMT 的持续时间,以 hrs:minutes:seconds 格式显示。例如:0:00:10。

其余字段为下表所示的密钥/值对。

密钥

程序

ScanState.exe 或 LoadState.exe.

ProductVersion

USMT 的完整产品版本号。

ComputerName

运行 USMT 的源计算机或目标计算机的名称。

CommandLine

用于运行 USMT 的完整命令。

PHASE

报告正在启动迁移过程中的一个新阶段。此值可以是下列各项之一:

  • 初始化

  • 扫描

  • 收集

  • 保存

  • 估计

  • 应用

detectedUser

  • 对于 ScanState 工具,该项指的是 USMT 在可迁移的源计算机上检测到的用户。

  • 对于 LoadState 工具,该项指的是 USMT 在可迁移的存储中检测到的用户。

includedInMigration

定义在迁移中是否包含用户配置文件/组件。有效值为 Yes 或 No。

forUser

指定以下内容之一:

  • 正在迁移的用户状态。

  • 本计算机,指的是与用户无关的文件和设置。

detectedComponent

指定 USMT 检测到的组件。

  • 对于 ScanState,该项指的是在源计算机上安装的组件或应用程序。

  • 对于 LoadState,该项指的是在存储中检测到的组件或应用程序。

totalSizeInMBToTransfer

要迁移的文件和设置的总大小(以 MB 为单位)。

totalPercentageCompleted

ScanState 或 LoadState 已经完成的总迁移百分比。

collectingUser

指定 ScanState 正在为哪个用户收集文件和设置。

totalMinutesRemaining

完成剩余迁移所需时间的估计值(以分钟为单位)。

错误

发生的非致命错误类型。此值可以是下列各项之一:

  • UnableToCopy:因为存储所在的磁盘已满,所以无法复制到存储中。

  • UnableToOpen:因为另一个应用程序或服务以非共享模式打开了要迁移的文件,所以无法打开该文件。

  • UnableToCopyCatalog:因为存储已损坏而无法复制。

  • UnableToAccessDevice:无法访问设备。

  • UnableToApply:无法将设置应用到目标计算机。

objectName

导致非致命错误的文件或设置的名称。

操作

USMT 对非致命错误采取的操作。这些值为:

  • 忽略:忽略非致命错误并继续迁移,因为在命令行中指定了 /c 选项。

  • 中止:停止迁移,因为未指定 /c 选项。

errorCode

errorCode 或返回值。

numberOfIgnoredErrors

USMT 忽略的非致命错误总数。

消息

与 errorCode 对应的消息。

列表文件日志

列表文件日志 (Listfiles.txt) 提供已迁移文件的列表。此列表可用于解决 XML 问题,也可以将其保留为收集到迁移存储中的文件记录。列表文件日志只能由 ScanState.exe 使用。

诊断日志

通过将环境变量 MIG_ENABLE_DIAG 设置为指向 XML 文件的路径,可以获得诊断日志。

诊断日志包含:

  • 详细的系统环境信息

  • 详细的用户环境信息

  • 有关收集的迁移单元 (migunit) 及其内容的信息

使用诊断日志

诊断日志本质上是一个对迁移中包含的所有迁移单元 (migunit) 的报告。迁移单元是由 XML 文件中与其关联的组件识别的数据集合。迁移存储由迁移中的所有迁移单元组成。诊断日志可用于确认哪些迁移单元包含在迁移中,还可以用于在编写迁移 XML 文件时进行疑难解答。

下列示例描述了可以使用诊断日志的一般情况。

为文件编写“包含”规则后,为什么不迁移此文件?

假设我们有下列目录结构,并且希望将“数据”目录包含在迁移中,同时还希望在迁移中包含“新建文件夹”中的“新建文本文档.txt”文件。C:\data 目录包含:

01/21/2009  10:08 PM    <DIR>          .
01/21/2009  10:08 PM    <DIR>          ..
01/21/2009  10:08 PM    <DIR>          New Folder
01/21/2009  09:19 PM                13 test (1).txt
01/21/2009  09:19 PM                13 test.txt
               2 File(s)             26 bytes

C:\data\New Folder 目录包含:

01/21/2009  10:08 PM    <DIR>          .
01/21/2009  10:08 PM    <DIR>          ..
01/21/2009  10:08 PM                 0 New Text Document.txt
               1 File(s)              0 bytes

为了迁移这些文件,需要编写下列迁移 XML:

<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="https://www.microsoft.com/migration/1.0/TestSuite_BUGFIX">

<component context="System"  type="Application">
  <displayName>DATA1</displayName>
  <role role="Data">
    <rules>
      <include>
        <objectSet>
          <pattern type="File">c:\data\ [*]</pattern>
        </objectSet>
      </include>

    </rules>
  </role>
</component>
</migration>

但是,在测试迁移时,你会注意到“新建文本文档.txt”文件并不包含在迁移中。若要解决此问题,可以在设置环境变量 MIG_ENABLE_DIAG 后重复进行迁移,以便生成诊断日志。在诊断日志中搜索组件“DATA1”时,会发现下列 XML 内容:

<MigUnitList>
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications" Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data [*]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test (1).txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.txt]" SimObj="false" Success="true"/>
</MigUnit>
</Perform>

分析此部分 XML 内容后会发现在处理迁移规则时创建的迁移单元。<Perform> 部分详细列出了计划收集的实际文件,以及收集操作的结果。 “新建文本文档.txt”文件未出现在此部分中,从而确定迁移规则编写不正确。

分析 XML 元素参考主题后会发现,需要按如下所示修改 <pattern> 标记:

<pattern type="File">c:\data\* [*]</pattern>

修改标记后再次执行迁移时,诊断日志将显示如下内容:

<MigUnitList>
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications" Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data\* [*]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test (1).txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [New Text Document.txt]" SimObj="false" Success="true"/>
</MigUnit>
</Perform>

此诊断日志确认修改后的 <pattern> 值启用了对该文件的迁移。

编写排除规则将其排除后,为什么仍迁移此文件?

在此方案中,你有下列目录结构,并且希望迁移“数据”目录中除文本文件外的所有文件。C:\Data 文件夹包含:

Directory of C:\Data

01/21/2009  10:08 PM    <DIR>          .
01/21/2009  10:08 PM    <DIR>          ..
01/21/2009  10:08 PM    <DIR>          New Folder
01/21/2009  09:19 PM                13 test (1).txt
01/21/2009  09:19 PM                13 test.txt
               2 File(s)             26 bytes

C:\Data\New Folder 包含:

01/21/2009  10:08 PM    <DIR>          .
01/21/2009  10:08 PM    <DIR>          ..
01/21/2009  10:08 PM                 0 New Text Document.txt
               1 File(s)              0 bytes

你编写下列迁移 XML:

<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="https://www.microsoft.com/migration/1.0/TestSuite_BUGFIX">

<component context="System"  type="Application">
  <displayName>DATA1</displayName>
  <role role="Data">
    <rules>
      <include>
        <objectSet>
          <pattern type="File">c:\data\* [*]</pattern>
        </objectSet>
      </include>
    </rules>
    <rules>
      <exclude>
        <objectSet>
          <pattern type="File">c:\* [*.txt]</pattern>
        </objectSet>
      </exclude>

    </rules>
  </role>
</component>

但是,在测试迁移时,你会注意到迁移中仍包含所有文本文件。 为解决此问题,可以在设置环境变量 MIG_ENABLE_DIAG 后执行该迁移,以便生成诊断日志。 在诊断日志中搜索组件“DATA1”时,会发现下列 XML 内容:

<MigUnitList>
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications" Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data\* [*]"/>
</Patterns>
<Patterns Type="Exclude">
<Pattern Type="File" Path="C:\* [*.txt]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test (1).txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.docx]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [New Text Document.txt]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [test.docx]" SimObj="false" Success="true"/>
</MigUnit>
</Perform>

查看诊断日志后,可以确认仍在迁移这些文件,并且所编写的迁移 XML 规则有问题。需要按如下所示更新迁移 XML 脚本:

<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="https://www.microsoft.com/migration/1.0/TestSuite_BUGFIX">

<component context="System"  type="Application">
  <displayName>DATA1</displayName>
  <role role="Data">
    <rules>
      <include>
        <objectSet>
          <pattern type="File">c:\data\* [*]</pattern>
        </objectSet>
      </include>
    </rules>
    <rules>
      <exclude>
        <objectSet>
          <pattern type="File">c:\data\* [*.txt]</pattern>
        </objectSet>
      </exclude>

    </rules>
  </role>
</component>


</migration>

修改后的迁移 XML 脚本会从迁移中排除这些文件,可从下列诊断日志中得到确认:

<MigUnitList>
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)" Context="System" ConfidenceLevel="100" Group="Applications" Role="UserData" Agent="CMXEAgent" Selected="true" Supported="true">
<Patterns Type="Include">
<Pattern Type="File" Path="C:\data\* [*]"/>
</Patterns>
<Patterns Type="Exclude">
<Pattern Type="File" Path="C:\data\* [*.txt]"/>
</Patterns>
</MigUnit>
</MigUnitList>
<Perform Name="Gather" User="System">
<MigUnit Name="&lt;System&gt;\DATA1 (CMXEAgent)">
<Operation Name="Store" Type="File" Path="C:\data" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data [test.docx]" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder" SimObj="false" Success="true"/>
<Operation Name="Store" Type="File" Path="C:\data\New Folder [test.docx]" SimObj="false" Success="true"/>
</MigUnit>
</Perform>

另请参阅

其他资源

XML 元素库
ScanState 语法
LoadState 语法