长话短说(ish),我们正处于从 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 服务器上有一个可爱的文件,没有办法恢复它,或者手动解密它(至少据我所知)。
既然它出现了,这是通过 GUI 完成的,所以我们不能返回查看 CLI 命令以从那里恢复,我很确定这个.mig
文件是加密的 - MigViewer警告它已加密,并尝试无论如何提取文件会导致 0 字节文件(corrupt)
附加到文件名。
我们运气不好,还是有人知道让我们摆脱束缚的方法?
用户的数据已经死了,是的。
Microsoft 支持确认原始的、自动生成的加密密钥不可检索,而且太长而无法破解。
由于扫描是在创建此并行计算机关联之前完成的,因此 SCCM 应该已自动创建就地计算机关联。如果该关联仍然存在,您应该能够使用以下命令使用 USMTUtils.exe 程序破解打开 .MIG 文件(参考:如何从压缩的 USMT 迁移存储中提取文件):
实际上,您可以使用生成的密钥来解密 Mig 文件。您必须将密钥粘贴到文本文件中并告诉命令行在那里查找密钥而不是将其粘贴进去(因为它会使命令字符串太长)。
您仍然可以使用旧机器吗?你用什么来重新格式化它,什么设置 - 只是快速格式化,还是适当的多写周期擦除?如果是前者,假设您知道在哪里查找,您也许可以从驱动器中检索旧密钥。有许多免费和付费实用程序可让您在最近格式化的驱动器上查找文件 - 只要旧文件实际上没有被覆盖,您就有机会。