部署升级后的操作系统时,Microsoft Deployment Toolkit设置SystemAutoLogon注册表项

问题描述:

我试图通过MDT部署已通过MDT“标准客户端升级”任务序列升级的映像。我的图像从Win10 v1607图像开始,并更新到v1703,然后被捕获。部署升级后的操作系统时,Microsoft Deployment Toolkit设置SystemAutoLogon注册表项

当我去部署捕获的图像时,我会在第一次登录时得到一个弹出窗口,显示c:\ LTIBootstrap.vbs找不到。挖掘,我发现安装操作系统和PC重新启动后,MDT任务序列继续运行,系统帐户为。这是奇怪的,因为它通常以内置的管理员帐户运行。

出于某种原因,即使unattend.xml文件包含了通常AutoAdminLogon项,在

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\SystemAutoLogon 

正在创建和部署期间设置为1的注册表键值。 (我通过在部署结束时比较注册管理机构来发现此问题。)此密钥不存在于捕获的图像中。 如果我部署手动更新到v1703的图像(通过Windows Update而不是MDT),则不会创建此密钥。

关于为什么unattend.xml可以被忽略或什么会导致SystemAutoLogon被创建和设置的任何想法?

我想清楚发生了什么事。

MDT升级任务序列使用指向setupcomplete.cmd的命令行/ postoobe选项调用升级。这会导致文件被复制到c:\ windows \ setup \ scripts \ setupcomplete.cmd。当Windows安装完成后,如果文件出现在该位置,它将在SYSTEM帐户下运行。

问题是即使升级任务序列完全完成后,该文件仍然保留。因此,如果您然后捕获映像并将其部署到真机,它将看到setupcomplete.cmd并在部署之后运行它,而不是使用通常的默认管理员帐户。

我想象在c:\ windows中存在此文件...是导致上述注册表更改的原因。 setupcomplete.cmd仅用于引导升级回到MDT任务序列,并且需要从c:\ windows中删除...当任务序列完成运行时。

知道升级任务序列的升级后部分以系统而非管理员身份通过与标准部署完全不同的机制运行非常重要,因为这会对您可以执行的操作产生限制。默认情况下,序列允许您安装应用程序..它们需要是可以通过SYSTEM安装的应用程序。

现在我已经更新了我的脚本目录中的本地SetupComplete.cmd,通过更改最后一个for循环来完成删除操作(在for循环之前还有一个输入错误,以防止退出回显) :

for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%d:\Windows\Setup\Scripts\setupcomplete.cmd ( 
del /q /f %%d:\Windows\Setup\Scripts\setupcomplete.cmd 
echo %DATE%-%TIME% Exiting SetupComplete.cmd >> %WINDIR%\Temp\setupcomplete.log) 
+0

发现我编辑到SetupComplete.cmd是不够的。如果您想通过关闭来完成任务序列,则意味着SetupComplete.cmd仍然存在,直到下次启动计算机才会被删除。这在某些情况下可能较小,但对我造成问题。 所以我已经转移到任务序列末尾的手动步骤来删除SetupComplete.cmd,并将清理代码从SetupComplete.cmd移到这个新的手动步骤。 – aggieNick02

在考虑到这个问题以及由于作为SYSTEM帐户运行而遇到问题后,我开始玩避免以SYSTEM帐户运行。 (一个大问题是,如果想要在重新启动后立即关闭任务序列,系统将开始运行速度过快,并且MDT中的关机调用失败。)

这个想法是改为使用以SYSTEM身份运行的SetupComplete.cmd仅作为默认管理员引导回运行任务序列。

有一些皱纹实施这一点。也就是说,从一个unattend.xml在正常运行同步命令安装不跑,所以像使管理员,对admin,禁用用户帐户页面禁用UAC,禁用异步运行一次都必须手动调用。除此之外,它只是一个通过任务的工序顺序的设置通过调用PopulateAutoAdminLogon和SetStartMDT正确的注册表项的OS升级完成后,再进行重新启动的问题。这似乎工作得很好。执行此操作的理想方法是使用调用PopulateAutoAdminLogon/SetStartMDT的同一脚本还解析unattend.xml并运行这些命令。

出于某种原因,外壳隐藏,即使一切都为它设置不起作用。我最好的猜测是,由于IsOSUpgrade设置任务序列亚军是这样做的,但我不知道。

采用这种方法,SetupComplete.cmd仅仅是一个单一的引导回任务序列负责,任务序列可以在它调用的脚本做PopulateAutoAdminLogon/SetStartMDT

有同时删除为了完全改进这种方法我已经做了足够的工作,现在我只需要解决一个自动登录问题,但实际上它确实让MDT在升级时更好地工作。希望他们将来充实它。