我有PowerShell 4并且想安装选择性Windows功能,例如只安装文件服务器FS-FileServer和文件服务器资源管理器FS-Resource-Manager。
[X]文件和存储服务FileAndStorage-Services已安装 [X]文件服务器FS-FileServer已安装 [X]安装文件服务器资源管理器FS-Resource-Manager
为此,我的示例代码如下所示
Configuration JSwebDeploy2
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
node "localhost"
{
WindowsFeature FS-FileServer
{
Name = "FS-FileServer"
Ensure = 'Present'
}
WindowsFeature FS-Resource-Manager
{
Name = "FS-Resource-Manager"
Ensure = 'Present'
}
}
}
JSwebDeploy2
这是正确的做法,还是有办法将所有子功能组合在一起。我遇到过WindowsFeatureSet,但这只能在Powershell 5.0中使用。
答案 0 :(得分:1)
你应该使用版本5,正如TheMadTechnician所说,但你可以通过在循环中生成配置来对功能进行分组:
Configuration JSwebDeploy2
{
Import-DscResource -ModuleName PSDesiredStateConfiguration
node "localhost"
{
@('FS-FileServer','FS-Resource-Manager').ForEach({
WindowsFeature $_
{
Name = $_
Ensure = 'Present'
}
}
}
}
JSwebDeploy2
使用您选择的循环结构,可能您想要参数化配置而不是硬编码数组,可能使用-ConfigurationData
等,但概念是相同的:使用循环和变量时你建立/生成你的配置。
这只是一个附注,但版本5具有更多用于调试和测试配置的功能,包括Invoke-DscResource
cmdlet;非常有用。
但要注意WindowsFeatureSet
是复合资源,该特定cmdlet不支持该资源。