Короче говоря, мы находимся на завершающем этапе нашего проекта миграции с XP на Windows 7, и, наконец, получили машину VIP для миграции. Поскольку машина почти такая же старая, как и операционная система на ней, этот конкретный пользователь был «благословлен» новым оборудованием в дополнение к новой ОС.
Проблема в том, что мы попросили стажера выполнить эту конкретную миграцию, и он как бы напортачил. Шутки в сторону. Короче говоря, общий процесс миграции состояния пользователя заключается в создании связи между старым и новым компьютерами в SCCM, выполнении последовательности задач записи на старом компьютере, а затем выполнении последовательности восстановления на новом компьютере. В этом случае последовательность задач захвата была запущена до того, как компьютеры были связаны, поэтому SCCM отказывается выполнять восстановление, и старая машина была переформатирована ... по какой-то причине ... до того, как это было обнаружено.
Теперь, когда мы пытаемся перенести пользователя путем «восстановления» USMT.mig
который был захвачен и загружен на сервер SCCM, мы получаем ошибку ниже, после Request State Store
действие.
Task Sequence: USMT - Restore State has failed with the error code (0x00004005).
For more information, contact your system administrator or helpdesk operator.
Соответствующие записи журнала из smsts[date-time].log
кажется:
<![LOG[Requesting SMP Root share config information from http://[Our SCCM server]:0]LOG]!><time="15:45:28.823+240" date="06-13-2014" component="OSDSMPClient" context="" type="1" thread="5136" file="smpclient.cpp:2348">
<![LOG[Received 4027 byte response.]LOG]!><time="15:45:28.892+240" date="06-13-2014" component="OSDSMPClient" context="" type="0" thread="5136" file="smpclient.cpp:2363">
<![LOG[Adding \\[Our SCCM server]\SMPSTORED_378B856C$ to list ]LOG]!><time="15:45:28.912+240" date="06-13-2014" component="OSDSMPClient" context="" type="1" thread="5136" file="smpclient.cpp:2403">
<![LOG[Successfully connected to "\\[Our SCCM server]\SMPSTORED_378B856C$"]LOG]!><time="15:45:28.919+240" date="06-13-2014" component="OSDSMPClient" context="" type="1" thread="5136" file="tsconnection.cpp:287">
<![LOG[Sending SMP request to http://[Our SCCM server]:0.]LOG]!><time="15:45:28.950+240" date="06-13-2014" component="OSDSMPClient" context="" type="1" thread="5136" file="smpclient.cpp:1854">
<![LOG[Received 4899 byte response.]LOG]!><time="15:45:29.045+240" date="06-13-2014" component="OSDSMPClient" context="" type="0" thread="5136" file="smpclient.cpp:1861">
<![LOG[SMP request to "http://[Our SCCM server]" failed with error: E_SMPERROR_MIGRATIONID_NOT_FOUND (204)]LOG]!><time="15:45:29.065+240" date="06-13-2014" component="OSDSMPClient" context="" type="2" thread="5136" file="smpclient.cpp:135">
<![LOG[Request to SMP 'http://[Our SCCM server]' failed with error (Code 0x80004005). Trying next SMP.]LOG]!><time="15:45:29.065+240" date="06-13-2014" component="OSDSMPClient" context="" type="2" thread="5136" file="smpclient.cpp:1601">
<![LOG[Failed to find an SMP that can serve request after trying 4 attempts.]LOG]!><time="15:45:29.065+240" date="06-13-2014" component="OSDSMPClient" context="" type="3" thread="5136" file="smpclient.cpp:1644">
<![LOG[ExecuteRestoreRequestToSMP failed (0x80004005).]LOG]!><time="15:45:29.065+240" date="06-13-2014" component="OSDSMPClient" context="" type="3" thread="5136" file="smpclient.cpp:2862">
<![LOG[ExecuteRestoreRequest failed (0x80004005).]LOG]!><time="15:45:29.065+240" date="06-13-2014" component="OSDSMPClient" context="" type="3" thread="5136" file="smpclient.cpp:2926">
<![LOG[OSDSMPClient finished: 0x00004005]LOG]!><time="15:45:29.065+240" date="06-13-2014" component="OSDSMPClient" context="" type="1" thread="5136" file="main.cpp:124">
<![LOG[Process completed with exit code 16389]LOG]!><time="15:45:29.077+240" date="06-13-2014" component="TSManager" context="" type="1" thread="5744" file="commandline.cpp:1123">
<![LOG[!--------------------------------------------------------------------------------------------!]LOG]!><time="15:45:29.078+240" date="06-13-2014" component="TSManager" context="" type="1" thread="5744" file="instruction.cxx:804">
<![LOG[Failed to run the action: Request State Store.
Unknown error (Error: 00004005; Source: Unknown)]LOG]!><time="15:45:29.082+240" date="06-13-2014" component="TSManager" context="" type="3" thread="5744" file="instruction.cxx:895">
<![LOG[Set authenticator in transport]LOG]!><time="15:45:29.088+240" date="06-13-2014" component="TSManager" context="" type="0" thread="5744" file="libsmsmessaging.cpp:7734">
<![LOG[Set a global environment variable _SMSTSLastActionRetCode=16389]LOG]!><time="15:45:29.350+240" date="06-13-2014" component="TSManager" context="" type="0" thread="5744" file="executionenv.cxx:668">
<![LOG[Set a global environment variable _SMSTSLastActionSucceeded=false]LOG]!><time="15:45:29.352+240" date="06-13-2014" component="TSManager" context="" type="0" thread="5744" file="executionenv.cxx:668">
<![LOG[Clear local default environment]LOG]!><time="15:45:29.353+240" date="06-13-2014" component="TSManager" context="" type="0" thread="5744" file="executionenv.cxx:807">
<![LOG[Failed to run the action: Request State Store. Execution has been aborted]LOG]!><time="15:45:29.365+240" date="06-13-2014" component="TSManager" context="" type="3" thread="5744" file="instruction.cxx:983">
<![LOG[Set authenticator in transport]LOG]!><time="15:45:29.373+240" date="06-13-2014" component="TSManager" context="" type="0" thread="5744" file="libsmsmessaging.cpp:7734">
<![LOG[Failed to run the last action: Request State Store. Execution of task sequence failed.
Unknown error (Error: 00004005; Source: Unknown)]LOG]!><time="15:45:29.700+240" date="06-13-2014" component="TSManager" context="" type="3" thread="5744" file="engine.cxx:213">
<![LOG[Set authenticator in transport]LOG]!><time="15:45:29.708+240" date="06-13-2014" component="TSManager" context="" type="0" thread="5744" file="libsmsmessaging.cpp:7734">
<![LOG[Task Sequence Engine failed! Code: enExecutionFail]LOG]!><time="15:45:33.323+240" date="06-13-2014" component="TSManager" context="" type="3" thread="5744" file="tsmanager.cpp:923">
Попытки расшифровать USMT.mig
файл с ключом восстановления из Computer Association
-> Recovery Information
очевидно, не работают, и с переформатированием исходного компьютера у меня быстро возникает ощущение, что любые следы ключа, необходимые для расшифровки этого файла, могут исчезнуть.
Итак, теперь у нас есть прекрасный USMT.mig
файл на нашем сервере SCCM, и нет возможности восстановить его или расшифровать вручную (по крайней мере, насколько я могу судить).
Поскольку он появился, это было сделано через графический интерфейс, поэтому мы не можем вернуться и посмотреть на команду CLI для восстановления оттуда, и я почти уверен, что это .mig
файл является зашифрованный - MigViewer предупреждает, что он зашифрован, и попытки извлечь файлы в любом случае приводят к 0-байтовым файлам с (corrupt)
добавляется к имени файла.
Нам не повезло, или кто-то знает, как нас вывести из тисков?
Фактически, вы можете использовать сгенерированный ключ для расшифровки файла миграции. Вы должны вставить ключ в текстовый файл и указать командной строке искать ключ там, а не вставлять его (так как это делает командную строку слишком длинной).
Попытки расшифровать файл USMT.mig с помощью ключа восстановления, найденного в Computer Association -> Recovery Information, очевидно, не работают, и с переформатированием исходного компьютера у меня быстро возникает ощущение, что любые следы ключа необходимо расшифровать этот файл, возможно, уже нет.
Поскольку сканирование было выполнено до создания этой параллельной ассоциации компьютеров, SCCM должен был автоматически создать ассоциацию компьютеров на месте. Если эта ассоциация все еще существует, вы сможете взломать файл .MIG с помощью программы USMTUtils.exe (ссылка: Как извлечь файлы из сжатого хранилища миграции USMT), используя следующую команду:
usmtutils /extract <Path to .MIG file> /decrypt /key:<Recovery key from SCCM console> <Path to Extract to>
Данные пользователя мертвы, да.
Служба поддержки Microsoft подтвердила, что исходный, автоматически сгенерированный ключ шифрования не может быть восстановлен и слишком длинный для взлома.
У вас все еще есть доступ к старой машине? Что вы использовали для его переформатирования и какие настройки - только быстрое форматирование или правильное стирание с несколькими циклами записи? В первом случае вы сможете получить старый ключ с диска, если знаете, где искать. Существует множество бесплатных и платных утилит, позволяющих находить файлы на недавно отформатированных дисках - если старый файл на самом деле не был перезаписан, у вас есть шанс.