Windows按需功能完整教程

最后更新: 17/12/2025
作者: 艾萨克
  • 按需功能允许您从系统中移除和添加功能和二进制文件。 Windows 来自本地存储库、ISO 或 Windows更新减少空间占用,提高安全性。
  • 像这样的工具 PowerShell的DISM 和组策略允许您控制功能的来源、安装和删除,包括 .NET Framework 3.5 和服务器角色。
  • 在 Windows 10、11 和 Server 中,FOD 作为功能进行管理,具有格式良好的存储库和类型,以及或有卫星包,以优化磁盘占用空间。
  • 在 Windows Server Core 2019 中,应用程序兼容性 FoD 包使体验更接近 GUI 编辑,同时又不失轻量级系统的优势。

Windows 中的按需功能

Windows按需功能是微软在几个版本前悄然推出的一项变革,它在不经意间彻底改变了 Windows 10、Windows 11和 Windows Server 中角色、功能和可选组件的安装和维护方式。如果您管理服务器或企业映像,那么了解其工作原理已不再是可选项。

Windows不会让整个系统加载大量可能永远用不到的二进制文件,而是允许您从本地存储库、特定 ISO 镜像或直接从 Windows 更新“添加和删除”功能。这节省了磁盘空间,提高了安全性,并让您在部署或修复计算机和服务器(包括在线和无人值守环境)时拥有更大的灵活性。

Windows 中的“按需功能”究竟是什么?

按需功能 (FOD)是微软对可选功能包的称呼,这些功能包可以随时添加到 Windows 系统或从中移除。这包括从语言资源(手写识别、文本转语音)到.NET Framework 3.5 (NetFx3)等组件、管理工具、图形控制台以及 Server Core 中的许多经典桌面功能。

其基本思路很简单:这些功能所需的文件可以从系统中删除(“有效载荷”被删除)以节省空间,当应用程序或管理员需要这些文件时,Windows 可以:

  • 从此处下载软件包 Windows更新如果计算机可以访问互联网。
  • 听听这个 共享网络资源或内部存储库.
  • 从……读 按需功能安装介质或 ISO.

在企业环境中,这一点至关重要:您可以创建轻量级的参考映像,使用组策略定义二进制文件的搜索位置,并完全控制计算机上存在哪些功能以及它们的安装位置。部署过程中再也不会出现 Windows 提示需要 DVD 的情况了。

Windows 中的按需功能概念

功能存储的工作原理(并排存储和 WinSxS)

讨论按需功能时,不可避免地要提及并行存储库和WinSxS文件夹。在现代 Microsoft 系统中,WinSxS 是内部存储库,用于存储多个版本的库、系统组件、角色和功能。

从历史上看,这种方法的出现是为了解决臭名昭著的“DLL地狱”:以前,一个应用程序可能依赖于特定版本的DLL,如果另一个应用程序安装了不同的版本,整个系统就会崩溃。并行存储允许同一组件的多个版本共存,每个应用程序都使用正确的版本,而不会覆盖其他程序的文件。

在现代 Windows Server 和 Windows 10/11 中,这个并行存储区还包含角色和功能二进制文件。当您通过服务器管理器、PowerShell 或 DISM 安装功能时,文件会从 WinSxS(或外部存储库)复制到系统中。如果您使用“按需功能”进行卸载,则会从计算机中删除未安装的功能文件,从而减小 WinSxS 和整个系统的大小。

一个有趣的细节是,当一个文件同时存在于系统和并行存储中时,即使它在逻辑上位于不同的位置,也只会物理地将一个副本保存到磁盘上。这有助于控制系统大小的增长,但即便如此,在承担多种角色的服务器上,如果按需功能管理不当,仍然会累积大量不必要的“负载”。

Windows Server 2012、2016、2019 及更高版本中的按需功能

按需功能在Windows 8 和 Windows Server 2012中引入。此后,其流程基本保持不变:您可以删除功能有效负载,然后从远程位置、Windows 更新或安装介质本身重新安装。这适用于物理服务器和虚拟服务器,以及未连接的 WIM 映像或 VHD 磁盘。

在服务器环境中,管理这些功能的典型机制是使用 PowerShell 的 Install-WindowsFeature 和 Uninstall-WindowsFeature cmdlet,以及 DISM 工具。在 Windows Server 2012/2012 R2 中,如果某个功能的二进制文件在本地不可用,系统会尝试按以下顺序查找它们:

  1. 指定源路径 由管理员自行设置(在角色和功能向导中或在 DISM/PowerShell 命令中)。
  2. 的配置 组策略“指定可选组件安装配置和组件维修”.
  3. 搜索 Windows更新 政策和网络连接条件允许这样做。

可以通过指定备用源路径、调整策略或限制对 Windows 更新的访问来覆盖此默认行为。这使得组织能够将安装角色和功能所需的所有文件集中存储在内部共享位置。

在 Windows Server 中使用按需功能

创建共享的并排功能库

企业最常用的方法之一是在网络上建立一个共享的功能库,任何服务器都可以从中获取安装角色和功能的二进制文件。这个功能库通常被称为并行存储,它实际上就是一个包含相应文件并已正确配置权限的共享文件夹。

  如何优化浏览器并减少 RAM 使用量

典型的安装过程非常简单:首先,创建一个文件夹,例如\\server\share\sxs ,并将其共享到网络上。然后,将Windows Server 安装介质中的整个Sources\SxS文件夹复制到该共享位置。这些文件将作为服务器在安装按需功能时使用的有效负载。

关键在于权限:仅仅允许用户读取文件夹是不够的;使用该存储的服务器上的计算机帐户也需要读取权限。这意味着您必须授予DOMAIN\SERVER_NAME$ (或包含这些帐户的组)访问权限。授予“Everyone”组访问权限看似诱人,但从安全角度来看,这并非最佳方案。

创建完成后,您可以在使用“角色和功能”向导、PowerShell 或 DISM 安装功能时,将此存储库指定为源路径。这样,当系统在本地找不到二进制文件时,它会首先在此共享存储库中查找,而不是在 Internet 上搜索。

安装 .NET Framework 3.5 和其他按需功能

按需功能的一个典型例子是.NET Framework 3.5(包含 2.0 和 3.0 版本)的安装。自 Windows Server 2012 和 Windows 8 起,NetFx3 二进制文件不再默认包含在系统中;移除它们是为了降低初始系统负载。

当您尝试在缺少必要文件的情况下启用 .NET 3.5 时,Windows Server 2012 及更高版本会尝试连接到Windows 更新来查找这些文件(前提是策略允许)。如果服务器无法访问互联网,则必须从内部存储库或安装介质获取这些文件,这时就需要用到 DISM、PowerShell 和组策略。

通常,您可以通过三种方式安装 .NET Framework 3.5:使用Install-WindowsFeature cmdlet、服务器管理器中的“添加角色和功能向导”或DISM工具。所有方法的逻辑都相同:指定功能 (NetFx3),并在必要时提供包含文件的 SxS 文件夹或 WIM 文件的源路径。

安装带有按需功能的 .NET Framework

使用 PowerShell 安装 .NET Framework 3.5 (Install-WindowsFeature)

对于许多管理员来说,PowerShell 是管理角色和功能最便捷的方式。通过提升权限的会话,可以使用Install-WindowsFeature cmdlet ,在计算机上没有 .NET Framework 3.5 二进制文件时,指定源路径来启用它。

典型的工作流程是:从桌面或 Server Core 的命令提示符中输入PowerShell,然后以管理员身份运行 PowerShell 控制台。接下来,运行类似如下的命令:

Install-WindowsFeature NET-Framework-Core -Source D:\Sources\SxS

在本例中,D盘包含 Windows Server 安装介质,Sources\SxS路径包含 NetFx3 所需的有效负载。如果您已通过组策略定义了默认源路径,或者 Windows 更新已足够使用,则无需指定 -Source 参数,除非您想要强制使用特定存储库。

如果贵组织的策略禁止访问互联网,或者如果您想确保服务器始终使用本地资源,请将此方法与联网的 SxS 存储和组策略结合使用,以阻止从 Windows 更新下载。

使用角色和功能向导安装 .NET Framework 3.5

在具有图形界面的环境中,许多管理员仍然更喜欢使用经典的服务器管理器“添加角色和功能向导” 。要从该向导安装 .NET Framework 3.5,您可以选择目标服务器(例如,运行 Windows Server 2016 的服务器),然后在功能选择页面上选中.NET Framework 3.5的复选框。

如果组策略允许使用 Windows 更新,并且服务器已连接到互联网,则单击“安装”后,向导将尝试从互联网查找并下载缺失的文件。您无需指定任何其他内容。但是,如果组策略阻止了此选项,或者您希望使用其他来源,则可以使用确认屏幕上的“指定备用源路径”链接。

在该字段中,您可以输入例如D:\Sources\SxS\来指定本地驱动器,或者输入类似WIM:\\server\share\install.wim:3 的路径来使用共享的 WIM 文件,其中最后一个数字表示包含文件的映像的索引。单击“确定”和“安装”后,向导将使用该位置来检索 .NET 3.5 有效负载。

该方案也用于安装其他依赖于按需功能的特性,尤其是在处理轻量级安装或封闭网络上的服务器时。

使用 DISM 安装 .NET Framework 3.5

部署映像服务和管理 (DISM)工具是管理 Windows 映像的瑞士军刀,支持在线和离线管理。它允许您启用或禁用功能、添加程序包以及管理 FOD 中的各项功能。

对于 .NET Framework 3.5,如果计算机可以访问 Windows 更新,或者组策略中已定义了源路径,只需运行:

DISM /online /Enable-Feature /Featurename:NetFx3 /All

此命令会在运行的系统上启用 NetFx3。另一方面,如果服务器从安装介质中检索文件,并且您不希望它尝试联系 Windows 更新或 WSUS,则可以使用:

DISM /online /Enable-Feature /Featurename:NetFx3 /All /LimitAccess /Source:D:\sources\sxs

/LimitAccess参数指示 DISM 不要搜索 Windows 更新或 WSUS 服务器,仅使用指定的源路径。这在隔离网络、具有严格限制的数据中心或准备从文件夹中的 WIM 文件挂载的脱机映像时尤其有用。

  什么是微软漏洞(Microslop)?为什么它会成为微软的问题?

使用组策略配置备用源

为了避免每次安装功能时都必须手动指定源路径,Windows 提供了一个特定的策略来控制在哪里查找缺失的功能文件以及如何与 Windows 更新和 WSUS 交互。

该设置名为“指定可选组件安装和组件维修设置”,位于:

计算机配置 → 管理模板 → 系统 → 指定可选组件安装和组件修复设置

启用此功能后,您可以在“备用源文件路径”框中输入共享文件夹或 WIM 文件的完整路径。例如:

  • 共享文件夹: \\服务器\共享\文件夹
  • WIM 文件: WIM:\\server\share\install.wim:3 (其中 3 是图像及其文件的索引)

此外,该策略还包括两个关键选项:一个选项指示永远不应从 Windows 更新下载有效负载,另一个选项确保即使您通常使用 WSUS,组件修复程序也会直接从 Windows 更新下载。

正确配置后,每当服务器需要安装本地没有的功能时,它都会首先访问您的企业存储库,而无需管理员记住输入正确的路径或互联网连接。

使用 Uninstall-WindowsFeature 和 DISM 删除功能文件

不仅仅是安装;按需功能的一个关键部分是移除未使用的功能,以节省空间并减少攻击面。在 Windows Server 2012/2012 R2 及更高版本中,您可以使用两个强大的工具来完成此操作:Uninstall-WindowsFeature cmdlet和DISM命令。

Uninstall-WindowsFeature cmdlet 允许您卸载功能并删除其功能文件。添加-remove参数会从服务器或脱机 VHD 中移除有效负载,从而释放并行存储中的空间。

例如,如果仅保留了许可服务,要从远程桌面服务角色中删除文件,您可以运行类似以下命令:

Uninstall-WindowsFeature -Name RDS-Licensing -ComputerName contoso_1 -Remove

在这种情况下,许可服务将被卸载,然后与整个远程桌面服务角色关联的二进制文件将从contoso_1服务器中删除。另一种方法是使用离线 VHD,直接从映像中卸载角色并删除其文件。

Uninstall-WindowsFeature -Name AD-Domain-Services,GPMC -VHD C:\WS2012VHDs\Contoso.vhd -ComputerName ContosoDC1

另一方面,DISM 允许您创建自定义 WIM 映像,其中不再包含某些功能所需的文件。这非常适合生成根据您的需求量身定制的安装介质,其体积更小,并且只包含您在部署中实际会用到的组件。

一次性移除所有未使用的功能加载项

在某些情况下,更进一步从服务器中删除所有未安装的函数有效负载会很有用。这可以通过 PowerShell 的管道操作来实现自动化,只需将多个命令组合起来即可。

首先,使用Get-WindowsFeature获取所有服务器功能列表。然后,使用Where-Object筛选出 Installed 状态为 false 的功能,并附带一个评估列表中每个项的小脚本。最后,将筛选后的集合传递给Uninstall-WindowsFeature -Remove以删除所有不必要的二进制文件。

思路大致如下:获取 Get-WindowsFeature 的输出,筛选出$.Installed -eq $FALSE 为空的记录,然后使用 Uninstall-WindowsFeature -Remove 命令将其移除。这样,系统就只保留了与你实际启用的功能相关的工作负载,从而释放大量空间。

测试表明,在完整安装中,删除未使用功能的并行存储可以节省大约 10% 的空间,如果同时切换到 Server Core 并清理 WinSxS,在某些情况下,空间减少量可以接近 30%。

Windows 10 和 Windows 11 中的按需功能、功能和存储库

在 Windows 10 和 Windows 11 中,微软进一步完善了按需功能模型;现在它更加注重“功能”,这些功能主要通过 DISM 工具的/add-capability选项进行管理。此外,在特定情况下,还可以通过注册表解锁隐藏功能或强制执行某些行为。

对于 Windows 10,每个主要版本(例如 1809、1903、2004 等)都有一个按需功能 (FOD) ISO 镜像。对于 Windows 11,微软将语言和可选功能统一到一个“语言和可选功能”ISO镜像中。FOD 或 L&OF ISO 镜像必须与您的系统镜像版本匹配,因为混用不同版本可能会导致兼容性问题。

在此背景下, Windows 将FOD分为两种类型:

  • FOD 不含卫星包单体包:这类包的所有资源(包括语言)都包含在一个单独的 .cab 文件中。它们可以通过两种方式添加…… DISM /add-capability 和 DISM /add-package.
  • FOD 卫星包裹主体部分是语言无关的,此外还有针对不同语言和架构的附属软件包。安装它们时, 只会添加与您的图像相关的卫星。减少磁盘占用空间。这些功能只能在以下情况下添加: DISM /add-capability指定单个 /CapabilityName;DISM 会负责拉取所有依赖项。

要管理这些功能,您可以使用诸如/Get-Capabilities(列出映像中可用的功能)、/Get-CapabilityInfo(查看特定功能的详细信息)和/Remove-Capability(删除功能)之类的命令。请注意,您不能删除其他功能所依赖的功能;Windows 会阻止此操作以避免系统不一致。

  如何在 Windows 11 中检查您是否使用独立显卡

使用 DISM 按需管理功能

FOD 存储库以及 DISM /add-capability 和 /add-package 的使用

使用DISM /add-capability在离线镜像中预安装功能时,通常需要一个格式良好的按需功能 (Features on Demand) 存储库。您可以直接使用 FOD 中挂载的 ISO 镜像或语言和可选功能,也可以使用DISM /export-source将所需内容导出到自定义存储库。

工作流程示例:将 Windows 映像 (install.wim) 挂载到一个文件夹中,将 FOD ISO 挂载到另一个驱动器中,然后运行如下命令:

dism /image:C:\mount\windows /export-source /source:D: /target:C:\repository /capabilityname:App.StepsRecorder~~~~0.0.1.0

假设 D 盘是您挂载 FOD ISO 镜像的驱动器,此命令会将步骤记录器功能包以及 DISM 所需的其他信息提取到 C:\repository 文件夹。该文件夹将成为一个最小化的存储库,您可以在向其他镜像添加功能时将其用作/Source 参数。

切勿直接手动将 .cab 文件复制到任何文件夹:DISM 需要存储库中额外的元数据才能正常运行,而 /export-source 命令正是确保这一点。否则,/add-capability 命令可能会失败或找不到依赖项。

对于没有卫星的 FOD,也可以使用`DISM /add-package`命令,指定特定 .cab 文件的路径,并像添加普通软件包一样添加它。但是,推荐的做法是对所有 FOD 使用 `/add-capability`命令统一管理流程,以便统一管理并正确解决依赖关系,尤其是在 Windows 10 和 11 系统上。

Windows Server Core 2019 中的按需功能和应用程序兼容性

Windows Server Core 凭借其更小的资源占用、更高的安全性和更小的攻击面,正逐渐获得广泛应用。其一直以来面临的主要问题是与那些依赖桌面版组件的应用程序和工具的兼容性问题。为了解决这个问题,微软推出了Server Core 应用程序兼容包,作为一项按需功能提供。

这些 FoD 软件包为 Server Core 添加一系列二进制文件和图形控制台,这些文件和控制台通常仅在桌面体验版中提供,但无需安装完整的界面。这是一种折衷方案:您仍然拥有 Server Core,但同时拥有更多用于管理和诊断的本地工具。

在 Server Core 2019 中,您可以按需添加的组件包括语言资源、.NET Framework、辅助功能工具、Direct3D 开发图形工具、网络工具(RAS、RIP 监听器、SNMP)、OpenSSH 服务器以及一系列优秀的远程服务器管理工​​具 (RSAT),例如 ADDS/LDS 工具、DHCP、DNS、故障转移群集、GPO 管理、IPAM 等。

应用程序兼容性 FoD 包可以通过多种方式获得:从Windows 更新(如果服务器可以访问互联网)、通过从批量许可门户、Microsoft 评估中心或 Visual Studio 下载的服务器 FOD ISO ,甚至可以通过Insider Preview 版本在新功能正式发布前进行测试。

在 Windows Server 2019 Core 上安装兼容包 (FoD)。

在 Server 2019 Core 中,安装应用程序兼容包最直接的方法是使用Add-WindowsCapability cmdlet。如果服务器可以访问 Internet 并且策略允许,则可以使用单个命令从 Windows 更新中检索整个程序包。

例如,要安装主应用程序兼容性包 ServerCore.AppCompatibility,只需运行:

Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0

下载并安装完成后,系统会提示您重新启动。重新启动后,您将可以使用之前在 Core 中不可用的实用程序,例如资源监视器 (resmon)或事件查看器 (eventvwr.exe),这使得习惯于图形环境的管理员能够更轻松地管理和排除 Server Core 故障。

如果您不想依赖 Windows 更新,您可以挂载服务器 FOD ISO(例如,通过虚拟机管理程序将其附加到虚拟机),并使用带有指向虚拟 DVD 驱动器的-Source参数的 Add-WindowsCapability 命令,并将其与-LimitAccess结合使用,以防止其尝试连接 Internet。

Windows Server Core 中的按需功能

在VMware vSphere等虚拟化基础架构中,典型的工作流程通常是:下载 FoD ISO 文件,将其复制到数据存储,在 Server Core 虚拟机中挂载,然后使用Get-PSDrive命令找到包含该介质的驱动器。或者,您可以将 ISO 文件复制到服务器本地,并使用Mount-DiskImage -ImagePath 命令挂载,然后从该位置安装相应的容量。

Server Core + 按需功能以实现兼容性的这种组合,打造出了一个非常轻量级、安全高效的服务器,同时在需要时还能使用经典工具,这促进了 Server Core 在 2019 版本及以后的采用。

整个按需功能、存储库、功能和策略生态系统使得规划更简洁的部署成为可能,减少臃肿,并能精细控制安装的内容、时间和位置,同时又不丢失轻松管理和维护系统所需的工具。

Vivetool:如何测试 Windows 11 中的隐藏功能 - 3
相关文章:
如何使用 ViVeTool 和 StagingTool 解锁 Windows 11 中的隐藏功能