ログ ファイル
移行を監視したり、移行のエラーや失敗をトラブルシューティングする際は、ユーザー状態移行ツール (USMT) 5.0 のログを利用できます。このトピックでは、USMT のログを利用するためのコマンド ライン オプションのほか、移行を停止する必要のある致命的なエラーの種類と、スキップして移行を続ける必要のある致命的ではないエラーの種類を設定する新しい XML 要素について説明します。
ログのコマンド ライン オプション
ScanState と LoadState のログ
進行状況ログ
リスト ファイル ログ
診断ログ
ログのコマンド ライン オプション
次の表は、ログに関連する各コマンド ライン オプションを一覧にしたものです。ログの名前と各ログに記録される情報の種類が記載されています。
コマンド ライン オプション | ファイル名 | 説明 |
---|---|---|
/l: [パス\]ファイル名 |
Scanstate.log または LoadState.log |
ScanState.log または LoadState.log のパスとファイル名を指定します。 |
/progress: [パス\]ファイル名 |
進行状況ログのパスとファイル名を指定します。 |
移行の状態に関する情報を完了率で示します。 |
/v: [詳細レベル] |
該当なし |
「ScanState の構文」の「監視オプション」をご覧ください。 |
/listfiles [パス\]ファイル名 |
リスト ファイル ログのパスとファイル名を指定します。 |
移行されたファイルのリストを出力します。 |
環境変数 MIG_ENABLE_DIAG に XML ファイルのパスを設定します。 |
USMTDiag.xml |
診断ログには、詳しいシステム環境情報とユーザー環境情報、さらに、収集される移行単位 (migunit) とそれらの内容に関する情報が記録されます。 |
注意
ストアのパスにログ ファイルを格納することはできません。格納すると、USMT の実行時にそのログは上書きされます。
ScanState と LoadState のログ
ScanState と LoadState のログは、ScanState ツールと LoadState ツールを実行したときに作成されるテキスト ファイルです。移行を監視する際に、これらのログを役立てることができます。ログの内容は、使用したコマンド ライン オプションや指定した詳細レベルによって異なります。詳細レベルについて詳しくは、「ScanState の構文」の「監視オプション」をご覧ください。
進行状況ログ
進行状況ログは、/progress オプションを使って作成できます。Microsoft System Center Operations Manager 2007 などの外部ツールは、この進行状況ログを解析して監視システムを更新することができます。それぞれの行の最初の 3 つのフィールドには、次のように決まったデータが格納されます。
日付: "日月の短縮名年" 形式の日付。たとえば、08 Jun 2006 のように記録されます。
現地時刻: "時:分:秒" 形式の時刻 (24 時間制)。たとえば、13:49:13 のように記録されます。
移行時間: USMT が実行された "時:分:秒" 形式の時間。たとえば、00:00:10 のように記録されます。
その他のフィールドは、次の表に示すようなキーと値のペアになっています。
キー | 値 | |
---|---|---|
program |
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 |
移行完了までの推定時間 (分単位)。 |
|
error |
発生した致命的ではないエラーの種類。以下のいずれかになります。
|
|
objectName |
致命的ではないエラーの発生原因となったファイルまたは設定の名前。 |
|
action |
致命的ではないエラーに対して USMT が行ったアクション。該当する値は以下のとおりです。
|
|
errorCode |
エラー コードまたは戻り値。 |
|
numberOfIgnoredErrors |
USMT によって無視された致命的ではないエラーの合計数。 |
|
message |
errorCode に対応するメッセージ。 |
リスト ファイル ログ
リスト ファイル ログ (Listfiles.txt) には、移行された一連のファイルが記録されます。このリストを使って、XML の問題をトラブルシューティングしたり、移行ストアに収集されたファイルの記録を維持したりすることができます。リスト ファイル ログは、ScanState.exe でのみ利用できます。
診断ログ
診断ログは、環境変数 MIG_ENABLE_DIAG を XML ファイルのパスに設定して取得できます。
診断ログの内容は次のとおりです。
システム環境に関する詳しい情報
ユーザー環境に関する詳しい情報
収集されている移行単位 (migunit) とその内容に関する情報
診断ログの使用
診断ログは基本的に、移行の対象に含まれているすべての移行単位 (migunit) のレポートです。migunit は、XML ファイル内で関連付けられているコンポーネントごとに分類されたデータの集まりです。移行ストアは、移行に含まれるすべての migunit で構成されます。移行の対象となった migunit は、診断ログを使って確認することができます。移行 XML ファイルを作成する際のトラブルシューティングにも診断ログを利用することができます。
診断ログを利用できる一般的な状況を以下の例で説明します。
"include" 規則を作成したにもかかわらずファイルが移行されないのはなぜか。
次のようなディレクトリ構造を考えます。"data" ディレクトリは、"New Folder" 内の "New Text Document.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>
しかし、移行テストを行ったところ、"New Text 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 が作成されたことは明らかです。<Perform> セクションには、実際に収集対象としてスケジューリングされたファイルと収集操作の結果が列挙されます。 ところが、"New Text Document.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> の値を修正したことによってファイルの移行に成功したことが、診断ログから確認できます。
exclude 規則で除外したにもかかわらずファイルが移行されているのはなぜか。
次のディレクトリ構造を想定し、"data" ディレクトリ内の、テキスト ファイルを除いたすべてのファイルを移行対象にします。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>