Powershell

如何使用 DSC 在非伺服器機器上安裝 .NET windows 功能?

  • April 18, 2018

觀察以下 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 中表達它的正確方法是什麼?

WindowsFeatureDSC 資源基於cmdlet Install-WindowsFeature,並且僅在伺服器上可用。

要在 Windows 客戶端(即非伺服器)上啟用功能,您需要使用WindowsOptionalFeature資源,該資源在 DISM 上執行。

要列舉特定版本的功能列表,您可以Get-WindowsOptionalFeature -Online從命令行使用 DISM 或 DISM dism.exe /online /get-features:.

你問了關於NET-Framework-45-Core. 例如,這不是 Windows 10 客戶端上可單獨安裝/可移除的功能。

要辨識任何特定 Windows Server 功能的 DISM 功能,您可以查看(Get-WindowsFeature <name>).AdditionalInfo.InstallName. 例如,DISM 功能NET-Framework-45-CoreNetFx4.

請注意,雖然 DISM.exeWindowsOptionalFeature也可以在 Windows Server 上執行,但不建議這樣做,因為 Server 中的功能之間的關係更加複雜,並且這些關係可以通過 *-WindowsFeature cmdlet 以及伺服器管理器公開的其他元數據來理解和管理和 WMI 提供程序。如上所述直接安裝發現的 DISM 功能不一定會安裝所有需要或推薦的附加組件以使該功能正常工作。

引用自:https://serverfault.com/questions/907691