![Sysprep:它会从用户帐户中删除 Windows 凭据吗?](https://linux22.com/image/747225/Sysprep%EF%BC%9A%E5%AE%83%E4%BC%9A%E4%BB%8E%E7%94%A8%E6%88%B7%E5%B8%90%E6%88%B7%E4%B8%AD%E5%88%A0%E9%99%A4%20Windows%20%E5%87%AD%E6%8D%AE%E5%90%97%EF%BC%9F.png)
我有一个自动化流程,该流程应该构建一个映像,并将该映像部署到设置为运行服务的用户。用户需要访问 Azure 网络文件共享。为了提供访问文件共享的凭据,我通过以下命令将凭据保存到 Windows Credential Manager,并将其作为我的服务帐户运行。
cmdkey /add:storage.file.core.windows.net /user:Azure\storage /pass:password
然后我通过添加网络地图
net use Z: \\storage.file.core.windows.net\share /persistent:yes
网络已映射,我可以访问上面的 UNC 路径。然后,我通过运行 sysprep 并对其进行通用化来准备 VM 以进行映像捕获。
C:\Windows\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit /mode:vm
当我再次启动映像时,我可以登录我的服务帐户,但我添加的 cmdkey 消失了。我可以编写一个计划任务来重新添加 cmdkey,但我想知道是不是 Sysprep 真的抹去了我的 Windows 凭据,以及是否有办法避免这种情况。
答案1
我使用这种方法是为了创建一个已经安装网络驱动器的映像。我发现我的自动化进程(Packer)即使在同一个帐户下运行,也不会共享脚本会话的凭据和用户会话凭据。
通过脚本安装网络共享(无论是否在同一帐户上运行)并期望在用户会话/应用程序中安装该共享将不起作用。两者之间不共享凭据。
我所做的是让我的脚本创建一个批处理文件,该文件在我的服务运行时立即挂载网络共享,我知道我的服务将作为经过身份验证的会话在会话上运行,所以我只需调用我的批处理文件并从我的服务挂载网络共享,并且我的服务应该能够访问网络共享。
有趣的是,如果我的服务以我的帐户进行身份验证并且安装了网络共享,我将能够通过 RDP 访问网络共享而无需提供凭据,这表明应用程序会话在用户交互会话之间共享。