观察以下 DSC 配置:
Configuration Example
{
Import-DscResource –ModuleName PSDesiredStateConfiguration
node localhost
{
WindowsFeature 'NetFramework45'
{
Name = 'NET-Framework-45-Core'
Ensure = 'Present'
}
}
}
它在 Windows Server 上启用了 .NET 4.5。但 WindowsFeature 资源仅在服务器上有效。现在,我想在非服务器机器上达到同样的效果。在 PowerShell DSC 中表达它的正确方法是什么?
答案1
DSCWindowsFeature
资源基于Install-WindowsFeature
cmdlet,并且仅在服务器上可用。
要在 Windows 客户端(即非服务器)上启用功能,您需要使用Windows 可选功能资源,通过 DISM 工作。
要枚举特定版本的功能列表,您可以Get-WindowsOptionalFeature -Online
从命令行使用或 DISM dism.exe /online /get-features
:。
您询问过NET-Framework-45-Core
。例如,这不是 Windows 10 客户端上可单独安装/删除的功能。
要识别任何特定 Windows Server 功能的 DISM 功能,您可以查看 的结果(Get-WindowsFeature <name>).AdditionalInfo.InstallName
。例如, 的 DISM 功能NET-Framework-45-Core
是NetFx4
。
请注意,虽然 DISM.exe 也可以WindowsOptionalFeature
在 Windows Server 上运行,但不建议这样做,因为 Server 中功能之间的关系更复杂,并且这些关系由通过 *-WindowsFeature cmdlet 公开的附加元数据以及服务器管理器和 WMI 提供程序来理解和管理。直接安装如上所述发现的 DISM 功能不一定会安装使该功能正常运行所需的或推荐的附加组件。