2017-08-02 89 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