2017-08-02 90 views
1

我有PowerShell的4,想安装选择窗口功能,例如只安装文件服务器FS-文件服务器和文件服务器资源管理器FS-资源的管理程序。PowerShell的DSC配置:选择安装Windows功能

[X]文件和存储服务FileAndStorage-服务安装 [X]文件服务器FS-文件服务器安装 [X]文件服务器资源管理器FS-资源-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之后才可用。

+1

如果你要进入所需状态配置我强烈建议升级到最新版本的Windows管理框架,这将打动你至少PowerShell的5 – TheMadTechnician

回答

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的支持。

+0

感谢您的建议是非常有帮助的。您能否详细说明WindowsFeatureSet不支持哪个特定的cmdlet? – kumar

+0

如果允许,我宁愿使用powershell 5。你可以提供一个建议,我有2个foreach组,其中一个依赖另一个。如果我保留一个以下的foreach组,它会保证它们会被顺序执行吗? – kumar

+0

@kumar据我所知,它只是'Invoke-DscResource',不支持'Composite'资源。经常使用DSC不是问题。如果您将DSC资源与Chef或Puppet等其他配置管理系统一起使用,可能会出现这种情况,因为它们的实现可能使用“Invoke-DscResource”,但我不确定这一点。此外,您可以使用'Get-DscResource'查看系统上的可用资源以及它们的类型。要查看所有组合资源:'Get-DscResource | ? {$ _。ImplementedAs -eq“复合”}' – briantist