长话短说(ish),我们在XP到Windows 7迁移项目的尾端,最后得到了一些VIP的机器进行迁移。 由于机器几乎和操作系统一样古老,除了一个新的操作系统外,这个特殊的用户还被新的硬件“祝福”。
问题是我们有实习生做这个特殊的迁移,他有点搞砸了。 认真。 简而言之,用户状态迁移的一般过程是在SCCM中新旧计算机之间build立关联,在旧计算机上运行捕获任务序列,然后在新计算机上执行恢复序列。 在这种情况下,捕捉任务序列在计算机关联之前运行,所以SCCM拒绝执行恢复,并且旧计算机被重新格式化…出于某种原因…在发现之前。
现在,当我们尝试通过“恢复”捕获并上载到SCCM服务器的USMT.mig来迁移用户时,我们会在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">
尝试使用Computer Association – > Recovery Informationfind的恢复密钥来解密USMT.mig文件显然不起作用,并且在重新格式化原始计算机的情况下,我很快就会感觉到任何关键所需的痕迹解密这个文件可能不见了。

所以现在我们的SCCM服务器上有一个可爱的USMT.mig文件,无法恢复,或者手动解密(至less据我所知)。
由于这是通过GUI完成的,所以我们不能回去查看CLI命令从那里恢复,而且我很确定这个.mig文件是encryption的 – MigViewer警告说它已经被encryption,试图提取文件无论如何导致0字节的文件(corrupt)追加到文件名。
我们运气不好,还是有人知道让我们摆脱束缚的方法?
用户的数据已经死了,是的。
微软的支持证实,原始的,自动生成的encryption密钥是不可检索的,而且要破解的时间太长了。
尝试使用计算机关联 – >恢复信息中find的恢复密钥来解密USMT.mig文件显然不起作用,并且在重新格式化原始计算机的情况下,我很快就会感觉到任何关键所需的痕迹解密这个文件可能不见了。
由于扫描是在创build并行计算机关联之前完成的,因此SCCM应自动创build一个就地计算机关联。 如果该关联仍在,则应使用以下命令,通过使用USMTUtils.exe程序(参考: 如何从压缩的USMT迁移存储中提取文件)来破解.MIG文件:
usmtutils /extract <Path to .MIG file> /decrypt /key:<Recovery key from SCCM console> <Path to Extract to>
实际上,您可以使用生成的密钥来解密mig文件。 您必须将密钥粘贴到文本文件中,然后告诉命令行在那里查找密钥,而不是粘贴它(因为它使命令string太长)。
你还能访问旧机器吗? 你用什么来重新格式化,什么设置 – 只是一个快速的格式,或一个适当的多写周期擦除? 如果前者,你可能能够从驱动器检索旧密钥,假设你知道在哪里看。 有许多免费和付费的实用程序可以让你find最近格式化的驱动器上的文件 – 只要旧文件没有被覆盖,你就有机会。