百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

wds mdt 构建用于批量分发的 Windows 10 映像

ccwgpt 2024-11-30 19:22 51 浏览 0 评论

你好

这篇文章是对创建用于大规模分发的Windows映像(Windows 7)的后续或赞美。关于这一点,部署研究的人有一篇关于使用MDT创建更新的Windows 7主映像的精彩文章,非常有帮助。

今年夏天,Windows 10即将到来,我们已经开始慢慢地将某些领域过渡到微软的终极操作系统。在很大程度上,为Windows 10制作图像的过程与Windows 7相同,但有一些曲折。

工具。。。

我喜欢在虚拟机中构建映像。这种方法使我能够创建一个真正与硬件无关的映像。使用实际的硬件可以工作,但可能仍然存在 sysprep 无法概括的硬件残留物,并且可能将其投入生产。实际的硬件方法适用于 Ghost,但对于 MDT 则不再需要。选择任何虚拟化工具,它们都运行良好,有些甚至是免费的。以下是最好的一面:

  • VMware Workstation/Player – 不是免费的,但功能丰富并集成到vSphere中。
  • Microsoft Hyper-V – 随附 x64 服务器版本的 Windows(2008 及更高版本)和 x64 桌面版本的 Windows 8 及更高版本。尽管有所有"服务器"命名法,但客户端操作系统将正常工作。
  • Oracle VirtualBox – 免费,可用于Windows,macOS和Linux作为主机操作系统和客户端操作系统。

我知道有适用于macOS和Linux的虚拟化产品,但我们正在使用Windows。我认为最好在整个过程中坚持这一点。我相信如果Windows不是主机操作系统,一切都会好起来的。

鉴于此,您将需要在中等强度的PC上完成这项工作。并非我们所有人都拥有Dell Precision工作站,甚至无法访问安装了Hyper-V或vSphere的服务器,但是使用动力不足的PC将使构建映像变得缓慢而悲惨,仅使用虚拟化就是一种缓慢而悲惨的体验。关键是存储。创建映像、使用快照的多个映像以及测试会占用磁盘驱动器上的大量空间。我不会费心使用小于1TB的驱动器。它将在较小的事情上工作,但在这种情况下,您将限制整个过程。即使是1TB SSD现在也价格合理。SSD是王道,但仍然不等于每千兆字节价格的旋转磁盘。将用于主机操作系统的256GB SSD与用于存储的4TB旋转HDD的应用程序相结合,可以很好地工作。RAM 也非常重要,因为在使用 VM 时,主机和来宾操作系统同时使用 RAM。尝试最大化你的电脑将采取什么。32GB,64GB的RAM对于这种类型的工作来说并不是不合理的。

现代 CPU 对于许多任务(虚拟化)来说都非常强大。英特尔 CPU 具有专门用于虚拟化的扩展。四核 CPU 应该是将执行虚拟化的主机 PC 的先决条件。您可以使用双核CPU,但回想一下上面关于PC和虚拟化不足的部分。如果你能得到一个具有更多内核的CPU,6,8,太好了!至强CPU真的很好。我不会在四核i7下打扰任何东西。另一件需要考虑的事情,有时被忽视,是公交车速度。您可以拥有具有许多内核的最快的CPU,大量的RAM,使用甜美的2TB SSD工作,但是如果将所有这些设备连接在一起的总线很小,那么您所创造的只是数字交通拥堵。NVMe和M.2 SSD正在慢慢取代基于SATA的SSD,并在消费类和企业PC中旋转硬盘。它们显著提高了数据存储的吞吐量和速度。DDR4内存是RAM技术中最新,最伟大的内存,直到2020年,届时DDR5有望实现。它不是最便宜的,但DDR4的性能优于其所有前身。显然,您希望尽可能地获得最佳设置,但我知道预算有限制。

虚拟机设置...

这可能因地而异,但我至少会使用4GB的RAM,一个具有2个内核的vCPU和一个128GB VHD。这对Windows 7和10来说效果很好。如果可以向 VM 提供 8GB 的 RAM,请执行此操作。我们拥有的最小的磁盘驱动器是我们在2014年购买的某些戴尔OptiPlex 9020中的128GB SSD。完成后,我的映像的磁盘占用空间约为 70GB(35GB 由 dism 压缩)。如果新映像很小,则 64GB VHD 可以。这和我去的时候一样小。可以将Windows 10(加上更新),Office 2016,Adobe Reader,Chrome,VLC和AV软件的图像压缩到32GB驱动器上,这是一个紧密的挤压。Windows的大小随着时间的推移而增长,32GB将在您意识到之前很久就消失了。我开始认为32GB对于iPhone来说太小了......虚拟网卡应配置为 NAT,而不是桥接到生产网络。我们将有一个全新的Windows安装,直接从ISO安装,并暂时未修补。映像在准备好进行测试(修补)或准备使用之前,不应看到生产 LAN。

操作系统安装...

为新映像创建来宾 VM 后,将其虚拟 CD/DVD-ROM 驱动器连接到 Windows 10 的 ISO 文件。在 VMware Workstation 中,默认情况下,未安装操作系统的新虚拟机会自动引导至虚拟 CD/DVD-ROM。

按照屏幕上的提示将 Windows 安装到 VM 中,但在从安装/文件复制到 OEM/Windows 安装程序的第一次重新启动后停止。安装程序将在此时停止,并等待用户输入。在那里,我们将使用审核模式以我们想要的方式完成 Windows 的设置。我在单独的帖子中提供了有关安装Windows 10的更多信息。

在此屏幕上停止!

要进入审核模式,请同时按control + shift + F3,就像三指敬礼(control + alt + delete)一样。Windows 将重新启动,并以内置管理员帐户身份自动登录,并且无论重新启动多少次,都将继续这样做,直到运行 sysprep。在这里,我们将根据需要自定义 Windows 10,然后使用无人参与.xml文件运行 sysprep,该文件将我们的配置文件复制到默认值 (CopyProfile)。

此时,从虚拟机软件中拍摄 VM 的快照。

大多数公司或"工作"PC都安装了Microsoft Office以及Windows和其他常见程序。Microsoft/Windows Update用于更新Office和Windows。此时,我安装了 Office(使用 MSP 文件以静默方式),并使 Windows 能够更新除自身之外的其他产品。这是通过新的"设置"应用程序\"更新和安全"\"高级选项"\"当我更新Windows时为我提供其他Microsoft产品的更新"来完成的。

必须启用上述设置,Windows 才能更新 Office。

设置完成后,在新 VM 上运行更新,直到没有更多更新。Windows 10版本越晚,需要的更新就越少。Microsoft Office 2016 已经存在了一段时间,并且在线提供了相当数量的可用更新。更新完成后,关闭 VM,然后拍摄另一个快照。

某些基本应用程序(不包括在定期安装的 Windows 中)是其他应用程序使用的实用程序。各种 Visual C++ Redistributables (VCPP)、Microsoft Silverlight 和 Update .NET Frameworks (4.5/4.6) 等应用程序。这些都可以在网上轻松找到,并且可以静默安装。部署研究站点有一个脚本,该脚本将所有C++可再发行组件收集在一起,并以静默方式将它们安装在一个脚本中。

从Microsoft 网站(x86 和 x64)下载 VCP,并将其移动到如下所示的文件夹结构:(#### = VCPP 应用程序的日期,2005-2015)

Source \ VC#### \ vcredist_x64.EXE

下载适用于 x86 和 x64 版本 2005、2008、2010、2012、2013 和 2015 的所有 VCPP 应用程序,并按上述方式排列它们。

可以在此处找到安装所有这些的脚本。

Silverlight也可以从微软的网站免费获得。

接下来,是安装人们每天使用的所有常规应用程序。像Google Chrome或Mozilla Firefox这样的Web浏览器,像Adobe Reader或SumatraPDF这样的PDF阅读器,像Skype或Zoom这样的通信应用程序,以及像VLC或iTunes这样的多媒体应用程序。我将打算使用的应用程序下载并存储在服务器共享上,然后使用静默安装脚本将它们安装在仍处于审核模式的 Windows 10 上。

一些适用于常见应用程序的基本静默安装命令。如果您要了解更多详细信息,请查看ITNinja.com。它们具有许多应用程序的无人参与和部署相关信息的简编。

  • Adobe Reader: msiexec /qb /i AcroRead.msi TRANSFORMS=AdobeReaderDC.mst
  • Google Chrome Enterprise: msiexec /qn /norestart /i "GoogleChromeStandaloneEnterprise.msi"
  • 火狐浏览器: 火狐设置.exe -ms
  • VLC: vlc-2.2.1-win32.exe /L=1033 /S /NCRC
  • Java (如果你必须): jre-8u66-windows-x64.exe" /s JAVAUPDATE=0 AUTOUPDATECHECK=0
  • 记事本++: npp.6.8.7.安装程序.exe /S
  • 7-Zip: msiexec /q /I 7z920-x64.msi

Ninite.com有一个网站,它将创建一个包装器作为可执行文件,该包装器将下载所选的任何免费软件并安装它们。一气呵成。

请记住,放置在映像中的应用程序越少,该映像的相关性就越长。MDT/SCCM 除了操作系统本身之外,还可以部署应用程序。像 Adobe Flash Player 和 Adobe AIR 这样的产品经常更改,以至于我只是在部署映像时安装它们。

运行每个新安装的应用程序并根据需要对其进行配置。关闭,拍摄快照,然后重新启动并让 Windows 10 在审核模式下继续。

为了节省以我需要的方式配置 Windows 的时间和精力,我尝试尽可能多地实现自动化。编写基础知识脚本并消除冗余和重复的任务可以节省大量时间并防止不必要的错误。

创建用户帐户 - 我通常会创建一个本地用户帐户,用于管理用途和域不可用时的一般用途。

首先,我创建一个本地文件夹来包含日志文件和其他好东西,然后将其隐藏。此示例中的"C:\Stuff"。

mkdir C:\Stuff
attrib +h C:\Stuff
echo Creating local user accounts
net user pcadmin * /add /comment:”Local admin account” /passwordchg:NO
wmic useraccount where “name=’pcadmin'” set passwordexpires=FALSE
net localgroup “Administrators” pcadmin /add
net user pcuser * /add /comment:”Local user account” /passwordchg:NO
wmic useraccount where “name=’pcuser'” set passwordexpires=FALSE
net localgroup “Guests” pcuser /add
echo Local user accounts created on %date% at %time%>>C:\Stuff\Windows-10-Config-Script.txt

用户名后面的星号(*)将提示输入新用户的密码,而不是将其编码到脚本中并将其留给窥探。最后一个命令(echo...)将创建一个文本文件,并在 echo 和第一个>之间添加文本。如果是这种情况,双>>只会将文本添加到现有文件中。

为了防止用户通过Microsoft Windows Update使用新版本或Windows 10版本感到惊讶,我设置了一个注册表项来通过更新禁用Windows升级。

reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate” /v DisableOSUpgrade /t REG_DWORD /d 1 /f
echo Windows 10 version upgrade disabled on %date% %time%>>C:\Stuff\Windows-10-Config-Script.txt

我想要立即启动并运行的下一件事是远程桌面。

echo Enabling RDP with SASC alternate port
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp” /v “PortNumber” /t REG_DWORD /d “0xdesired_port_number_in_hex” /f
netsh advfirewall firewall add rule name=”Alternate RDP Port” dir=in action=allow protocol=TCP localport=desiredportnumberinbase10
echo RDP enabled with SASC alternate port on %date% at %time%>>C:\Stuff\Windows-10-Config-Script.txt

Windows默认配置的一个方面是隐藏文件扩展名。我可以猜测微软的设计师认为这样做可能对最终用户有帮助,但在实践中,我发现它对大多数人来说都不是。我注入了一个快速的注册表更改,以显示那些讨厌的扩展名 。

reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 0 /f
echo Windows file extensions shown on %date% %time%>>C:\Stuff\Windows-10-Config-Script.txt

脚本的下一部分是完全可选的。我不建议在最终用户准备好之前激活Windows或Office。即使在审核模式下使用 Windows,配置默认用户配置文件时也要注意的是,在激活 Windows 之前,Windows 无法对其进行个性化设置。这意味着您将无法配置壁纸,屏幕保护程序,桌面图标或颜色主题。我不认为这有什么大不了的,因为大多数这些项目都可以通过部署后的注册表调整或使用组策略进行配置。但是,如果要在 sysprep 期间将这些项目包含在自定义默认用户配置文件中,请激活并进行必要的更改。然后,将其添加到脚本中。

REM 首先尝试 KMS 激活。如果这不起作用,请尝试 MAK 激活。

REM Try KMS activation first. If that doesn’t work, try MAK activation.
cscript C:\Windows\System32\slmgr.vbs /skms kmsserver.company.com:port
cscript C:\Windows\System32\slmgr.vbs /ipk THEWI-NDOWS-10KMS-PRODU-CTKEY
cscript C:\Windows\System32\slmgr.vbs /ato
if %ERRORLEVEL% == 0 echo Windows activated by KMS on %date% %time%>C:\Stuff\Windows-10-KMS-Act.txt
EXIT
else
REM If KMS is not available, use an MAK to activate.
cscript C:\Windows\System32\slmgr.vbs /ipk THEWI-NDOWS-10MAK-PRODU-CTKEY
cscript C:\Windows\System32\slmgr.vbs /ato
echo Windows activated by MAK on %date% %time%>C:\Stuff\Windows-10-MAK-Act.txt
EXIT

如果 Windows 刚刚激活,请关闭,拍摄快照,然后重新启动并让 Windows 10 在审核模式下继续。

自定义默认用户配置文件...

准备默认用户配置文件,即内置管理员帐户,以最终用户应拥有的方式。在此帐户下运行应用程序以回答任何首次运行提示时,我会谨慎行事。与Windows 7相比,Windows 10在用户首次登录过程中的功能更多。这些更改会延长新用户首次登录所需的时间。随着应用程序的运行和设置的配置,用户配置文件的大小会迅速增长,从 2MB 增加到 500MB,而无需执行太多操作。每次将新用户带到 Windows 时,都会从C:\Users\default复制此默认配置文件。配置文件越大,复制过程花费的时间就越长,并且已经很长的登录过程就越长。我越来越多地寻求通过组策略和我们的端点管理平台 BigFix 提供默认用户设置的方法。

如果有一段时间没有拍摄 VM 快照,请立即拍摄,当然也可以在以任何方式运行 sysprep 之前拍摄。

为了让 sysprep 将我们配置的自定义用户配置文件复制到默认值(替换 Windows 提供的内容),在运行 sysprep 时,Windows 上只能有一个配置文件。如果有多个配置文件,则 sysprep 不会复制任何内容。通过系统小程序从 Windows 中删除任何配置文件,自定义配置文件除外。这还可以确保登录到安装了此 Windows 映像的电脑的每个人都将获得自定义配置文件。

接下来,创建一个无人参与.xml文件,并将"复制配置文件"选项设置为 true。无人参与文件的创建需要在 Windows 10 的另一个单独安装上完成,该安装运行的 Windows 10 版本与正在进行无人参与.xml完全相同的版本。将无人参与.xml文件复制到即将进行系统准备并运行的 VM (C:\Windows\System32\sysprep):

sysprep.exe /oobe /generalize /shutdown /unattend:C:\File\Path\To\unattend.xml

Sysprep将花时间并做它的事情来推广Windows并关闭。此时拍摄另一个 VM 快照,然后再次打开 VM 电源。Windows OOBE 将像从 OEM 或供应商处获得的新电脑一样运行。创建一个伪造的用户帐户以完成 OOBE 过程并进入 Windows 桌面。注销新用户帐户并以内置管理员身份登录(应列在登录屏幕的左下角)。删除通过 OOBE 创建的新用户帐户,并确认给出的生成的用户配置文件是最终用户应具有的。再拍摄一张 VM 的快照。完成后,使用所选的成像工具捕获图像。我们使用 Microsoft Deployment Toolkit (MDT)。若要将 Windows 的安装捕获到 MDT 中,请从要捕获的 Windows 安装中通过"运行"对话框连接到部署共享。无需重新启动到 MDT Windows PE USB 驱动器。

\\mdtserver.company.com\deploymentshare\Scripts\LightTouch.vbs

选择为创建 Windows 10 映像而创建的 Sysprep 和捕获任务。该任务还将对 Windows 进行系统准备,然后重新启动到 Windows PE 并执行捕获,从而在部署共享的"捕获"文件夹中创建 WIM 文件。不要理会 VM,让事情慢慢来。根据 VHD 上的安装大小,可能需要一个小时或更长时间。特定于 Windows 10 的 1709 内部版本的行为是 Windows 在 MDT 捕获任务中进行系统准备后,不会重新启动到 Windows PE 的趋势。它会再次回到Windows,完全跳过捕获。为了解决此问题,我必须确保 VM 的虚拟 CD/DVD 驱动器(映射到 MDT Windows PE ISO 文件)是 VM 启动序列上的第一项。Hyper-V 将从启动顺序的顶部删除虚拟 CD/DVD 驱动器,并将其替换为 VHD 中的 Windows 启动卷。在 VMware Workstation 中,我必须编辑 VM 的 VMX 文件以包含启动延迟,这使我有时间中断启动顺序并根据需要重定向它。只需添加:


bios.bootdelay = 20000

到虚拟机的 VMX 文件,它将等待 20 秒,然后完成引导序列中的默认顺序,这足以停止它、进入虚拟 BIOS 并切换引导设备。提供一个正在注意...

相关推荐

一个基于.Net Core遵循Clean Architecture原则开源架构

今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...

AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%

写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...

OneCode低代码平台的事件驱动设计:架构解析与实践

引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...

国内大厂AI插件评测:根据UI图生成Vue前端代码

在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...

AI+低代码技术揭秘(二):核心架构

本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...

GitDiagram用AI把代码库变成可视化架构图

这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...

30天自制操作系统:第六天:代码架构整理与中断处理

1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...

AI写代码越帮越忙?2025年研究揭露惊人真相

近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...

一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具

一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...

5分钟掌握 c# 网络通讯架构及代码示例

以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...

从复杂到优雅:用建造者和责任链重塑代码架构

引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...

低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈

专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...

框架设计并不是简单粗暴地写代码,而是要先弄清逻辑

3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...

大佬用 Avalonia 框架开发的 C# 代码 IDE

AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...

轻量级框架Lagent 仅需20行代码即可构建自己的智能代理

站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...

取消回复欢迎 发表评论: