USMT 記錄檔
用戶狀態移轉工具 (USMT) 記錄可用來監視移轉,以及針對錯誤和失敗的移轉進行疑難解答。 本文說明啟用 USMT 記錄的可用命令行選項。 它也會描述可用來設定的新 XML 元素:
- 哪些類型的錯誤是嚴重錯誤,且應該停止移轉。
- 哪些類型不是嚴重型別,且應該略過,以便繼續移轉。
記錄命令列選項
下表描述與記錄相關的每個命令行選項,並提供記錄檔名稱,以及每個記錄包含何種資訊類型的描述。
命令行選項 | 檔名 | 描述 |
---|---|---|
/l“[Path]FileName |
ScanState.exe.log 或 LoadState.log |
指定 ScanState 記錄檔或 LoadState 記錄檔的路徑和檔名。 |
/progress:[Path]FileName | 指定進度記錄檔的路徑和檔名。 | 依完成百分比提供移轉狀態的相關信息。 |
/v:[VerbosityLevel] | 不適用 | 請參閱 ScanState 語法中的監視選項。 |
/listfiles:[Path]FileName | 指定 Listfiles 記錄檔的路徑和檔名。 | 提供已移轉的檔案清單。 |
將環境變數 MIG_ENABLE_DIAG 設定為 XML 檔案的路徑。 | USMTDiag.xml |
診斷記錄包含詳細的系統環境資訊、用戶環境資訊,以及所收集之 migunits (移轉單位及其內容) 的詳細資訊。 |
注意
記錄檔無法儲存在 StorePath 中。 如果記錄檔儲存在 StorePath 中,則會在 USMT 執行時覆寫記錄檔。
ScanState 和 LoadState 記錄
ScanState 和 LoadState 記錄是 當 ScanState 和 LoadState 工具執行時所建立的文字檔。 這些記錄可用來協助監視移轉。 記錄的內容取決於使用的命令行選項和指定的詳細資訊層級。 如需詳細資訊層級的詳細資訊,請參閱 ScanState 語法中的監視選項。
進度記錄
您可以使用 /progress
選項來建立進度記錄。 外部工具,例如 Microsoft System Center Operations Manager,可以剖析進度記錄以更新監視系統。 每一行的前三個字段會固定,如下所示:
日期: Date,格式為 dayshortNameOfTheMonthyear。 例如:08 Jun 2023。
當地時間: 時間,格式為 hrs:minutes:seconds (使用 24 小時制) 。 例如:13:49:13。
移轉時間: USMT 執行時間的持續時間,格式為 hrs:minutes:seconds。 例如:00:00:20。
其餘欄位是索引鍵/值組,如下表所示。
鍵 | 值 |
---|---|
程式 |
ScanState.exe 或 LoadState.exe 。 |
productVersion | USMT 的完整產品版本號碼。 |
computerName | 執行 USMT 的來源或目的地電腦名稱。 |
commandLine | 用來執行 USMT 的完整命令。 |
階段 | 報告移轉的新階段正在開始。 此索引鍵可以是下列其中一個值:
|
detectedUser |
|
includedInMigration | 定義是否包含使用者配置檔/元件以進行移轉。 有效值為 [是] 或 [否]。 |
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 檔案的路徑,即可取得診斷記錄。
診斷記錄包含:
詳細的系統環境資訊。
詳細的用戶環境資訊。
收集移轉單位 (migunits) 及其內容的相關信息。
使用診斷記錄
診斷記錄基本上是移轉中 (migunits) 包含的所有移轉單位報告。 migunit 是數據的集合。 在 XML 檔案中,元件會識別與 Migunit 相關聯的 migunit。 移轉存放區是由移轉中的所有 Migunit 所組成。 診斷記錄可用來驗證移轉中包含哪些 Migunit,並且可用於撰寫移轉 XML 檔案時的疑難解答。
下列範例說明可以使用診斷記錄檔的常見案例。
為什麼當我為檔案撰寫「包含」規則時,這個檔案不會移轉?
假設我們有下列目錄結構,而且我們希望數據目錄包含在移轉中,以及 [新增資料夾] 中的 [新增文字] Document.txt 檔案。
C:\data
目錄包含:
12/21/2023 01:08 PM <DIR> .
12/21/2023 01:08 PM <DIR> ..
12/21/2023 01:08 PM <DIR> New Folder
12/21/2023 01:19 PM 13 test (1).txt
12/21/2023 01:19 PM 13 test.txt
2 File(s) 26 bytes
C:\data\New Folder
目錄包含:
12/21/2023 01:08 PM <DIR> .
12/21/2023 01:08 PM <DIR> ..
12/21/2023 01:08 PM 0 New Text Document.txt
1 File(s) 0 bytes
若要移轉這些檔案,會撰寫下列移轉 XML:
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://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>
不過,測試移轉時,會注意到 [新增文字 Document.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 區段的分析會顯示處理移轉規則時所建立的 migunit。 [ <執行]> 區段詳細說明已排程收集的實際檔案,以及收集作業的結果。 [ 新增文字 Document.txt 檔案不會出現在本節中,這會確認未正確撰寫移轉規則。
XML 元素庫參考文章的分析會顯示需要修改模式>標籤,<如下所示:
<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>
此診斷記錄會確認修改 <過的模式> 值可啟用檔案的移轉。
為什麼當我撰寫排除規則時會移轉此檔案?
在此案例中,存在下列目錄結構,而且 數據 目錄中的所有檔案都應該移轉,但文本檔除外。 檔案 C:\Data
夾包含:
Directory of C:\Data
12/21/2023 01:08 PM <DIR> .
12/21/2023 01:08 PM <DIR> ..
12/21/2023 01:08 PM <DIR> New Folder
12/21/2023 01:19 PM 13 test (1).txt
12/21/2023 01:19 PM 13 test.txt
2 File(s) 26 bytes
包含 C:\Data\New Folder\
:
12/21/2023 01:08 PM <DIR> .
12/21/2023 01:08 PM <DIR> ..
12/21/2023 01:08 PM 0 New Text Document.txt
1 File(s) 0 bytes
撰寫下列移轉 XML:
<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://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="http://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>