日志文件
可以使用 用户状态迁移工具 (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) 及其内容的信息。 |
备注 |
---|
请勿在 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 |
|
|
includedInMigration |
定义在迁移中是否包含用户配置文件/组件。有效值为 Yes 或 No。 |
|
forUser |
指定以下内容之一:
|
|
detectedComponent |
指定 USMT 检测到的组件。
|
|
totalSizeInMBToTransfer |
要迁移的文件和设置的总大小(以 MB 为单位)。 |
|
totalPercentageCompleted |
ScanState 或 LoadState 已经完成的总迁移百分比。 |
|
collectingUser |
指定 ScanState 正在为哪个用户收集文件和设置。 |
|
totalMinutesRemaining |
完成剩余迁移所需时间的估计值(以分钟为单位)。 |
|
错误 |
发生的非致命错误类型。此值可以是下列各项之一:
|
|
objectName |
导致非致命错误的文件或设置的名称。 |
|
操作 |
USMT 对非致命错误采取的操作。这些值为:
|
|
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="<System>\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="<System>\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="<System>\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="<System>\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="<System>\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="<System>\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="<System>\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="<System>\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>