Поделиться через


Файлы журнала USMT

Журналы средства миграции пользовательской среды (USMT) можно использовать для мониторинга миграции и устранения ошибок и неудачных миграций. В этой статье описываются доступные параметры командной строки для включения журналов USMT. В ней также описываются новые XML-элементы, которые можно использовать для настройки:

  • Какие типы ошибок являются неустранимыми и должны остановить миграцию.
  • Какие типы не являются неустранимыми и должны быть пропущены, чтобы продолжить миграцию.

Параметры командной строки журнала

В следующей таблице описаны все параметры командной строки, связанные с журналами, а также имя журнала и описание типа информации, содержащейся в каждом журнале.

Параметр командной строки Имя файла Описание
/l"[путь]Имя_файла ScanState.exe.log или LoadState.log Указывает путь и имя файла журнала ScanState или LoadState .
/progress:[Path]Имя_файла Указывает путь и имя файла журнала хода выполнения. Предоставляет сведения о состоянии миграции по проценту завершения.
/v:[VerbosityLevel] Неприменимо См . раздел Параметры мониторинга в синтаксисе ScanState.
/listfiles:[путь]Имя_файла Указывает путь и имя файла журнала 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 июня 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
  • Для средства ScanState этот ключ представляет собой определяемый пользователем USMT на исходном компьютере, который можно перенести.
  • Для средства LoadState этот ключ — это определяемые пользователем USMT в хранилище, которое можно перенести.
includedInMigration Определяет, включен ли профиль пользователя или компонент для миграции. Допустимые значения: Да или Нет.
forUser Задает одно из следующих значений:
  • Переносимое состояние пользователя.
  • Это компьютер, то есть файлы и параметры, которые не связаны с пользователем.
detectedComponent Указывает компонент, обнаруженный с помощью USMT.
  • Для ScanState этот ключ является компонентом или приложением, установленным на исходном компьютере.
  • Для LoadState этот ключ является компонентом или приложением, обнаруженным в хранилище.
totalSizeInMBToTransfer Общий размер файлов и параметров для миграции в мегабайтах (МБ).
totalPercentageCompleted Общий процент миграции, завершенной с помощью ScanState или LoadState.
collectingUser Указывает, для какого пользователя ScanState собирает файлы и параметры.
totalMinutesRemaining Оценка времени (в минутах) для завершения миграции.
ошибка Тип неустранимой ошибки. Этот ключ может быть одним из следующих значений:
  • Не удается скопировать хранилище, так как диск, на котором находится хранилище, заполнен.
  • Не удается открыть файл для миграции, так как файл открыт в другом приложении или службе в режиме без общего доступа.
  • UnableToCopyCatalog: не удается скопировать, так как хранилище повреждено.
  • UnableToAccessDevice: не удается получить доступ к устройству.
  • Не удается применить параметр к конечному компьютеру.
objectName Имя файла или параметра, вызвавшего неустранимую ошибку.
действие Действие, выполняемое USMT для неустранимой ошибки. Ниже приведены следующие значения:
  • Игнорировать: неустранимая ошибка игнорируется и миграция продолжается, так как параметр /c был указан в командной строке.
  • Прерывание: миграция остановлена, так как параметр /c не указан.
errorCode Значение errorCode или возвращаемое значение.
numberOfIgnoredErrors Общее количество неустранимых ошибок, пропущенных USMT.
Сообщение* Сообщение, соответствующее errorCode.

Журнал файлов списка

Журнал списка файлов (Listfiles.txt) содержит список перенесенных файлов. Этот список можно использовать для устранения проблем с XML или сохранить в виде записи файлов, собранных в хранилище миграции. Журнал файлов списка доступен только для ScanState.exe.

Журнал диагностики

Журнал диагностики можно получить, задав переменную среды MIG_ENABLE_DIAG пути к XML-файлу.

Журнал диагностики содержит:

  • Подробные сведения о системной среде.

  • Подробные сведения о пользовательской среде.

  • Сведения о собираемых единицах миграции (migunits) и их содержимом.

Использование журнала диагностики

Журнал диагностики по сути представляет собой отчет обо всех единицах миграции (мигунитах), включенных в миграцию. Migunit — это коллекция данных. В XML-файлах компонент определяет migunit, с которым связан migunit. Хранилище миграции состоит из всех migunits в миграции. Журнал диагностики можно использовать для проверки того, какие migunitы были включены в миграцию, а также для устранения неполадок при создании XML-файлов миграции.

В следующих примерах описаны распространенные сценарии, в которых можно использовать журнал диагностики.

Почему этот файл не переносится, когда я создал для него правило включения?

Предположим, что у нас есть следующая структура каталогов и что мы хотим, чтобы каталог данных был включен в миграцию вместе с файлом New Text 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>

Однако при тестировании миграции файл 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, созданный при обработке правила миграции. В <разделе Выполнение> подробно описаны фактические файлы, которые были запланированы для сбора, и результат операции сбора. Файл New Text 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>