Обратите внимание на следующую конфигурацию DSC:
Configuration Example
{
Import-DscResource –ModuleName PSDesiredStateConfiguration
node localhost
{
WindowsFeature 'NetFramework45'
{
Name = 'NET-Framework-45-Core'
Ensure = 'Present'
}
}
}
Он включает .NET 4.5 на Windows Server. Но ресурс WindowsFeature работает только на сервере. Теперь я хотел бы добиться того же эффекта на не серверной машине. Как правильно выразить это в PowerShell DSC?
В WindowsFeature
Ресурс DSC основан на Install-WindowsFeature
командлет и доступен только на сервере.
Чтобы включить функции на клиенте Windows (т. Е. Не на сервере), вам необходимо использовать WindowsOptionalFeature ресурс, который работает через DISM.
Чтобы перечислить список функций в вашей конкретной версии, вы можете использовать Get-WindowsOptionalFeature -Online
или DISM из командной строки: dism.exe /online /get-features
.
Вы спросили о NET-Framework-45-Core
. Например, это не отдельно устанавливаемая / съемная функция на клиенте Windows 10.
Чтобы определить функции DISM для любой конкретной функции Windows Server, вы можете посмотреть результаты (Get-WindowsFeature <name>).AdditionalInfo.InstallName
. Например, функция DISM для NET-Framework-45-Core
является NetFx4
.
Обратите внимание, что пока DISM.exe и WindowsOptionalFeature
также работают на Windows Server, это не рекомендуется, поскольку отношения между функциями на сервере более сложны, и эти отношения понимаются и управляются дополнительными метаданными, предоставляемыми с помощью командлетов * -WindowsFeature, а также диспетчера сервера и поставщика WMI. Непосредственная установка обнаруженных функций DISM, как описано выше, не обязательно приведет к установке всех необходимых или рекомендуемых дополнительных компонентов для правильной работы функции.