2017-08-14 106 views
0

我有一個複合資源。我的理解是,複合資源是一種被視爲資源的配置集合。我認爲資源是一個PowerShell模塊(但不是)。當前文件的結構如下:DSC:將自定義資源添加到複合資源

複合資源:

…1 Modules 
    └ 2 DefaultConfiguration 
     └ 3 {version} 
      ├ 4 DSCResources 
      │ ├ 5 hApplyGpo 
      │ │ ├ 5a hApplyGpo.psd1 
      │ │ └ 5b hApplyGpo.schema.psm1 
      │ └ 6 hStoragePool 
      │   ├ 6a hStoragePool.psd1 
      │   └ 6b hStoragePool.schema.psm1 
      └ 4a DefaultConfiguration.psd1 

我剛纔寫使用xDSCResourceDesigner定製的DSC資源,已經產生了以下文件結構:

自定義資源:

… 7 Modules 
    └ 8 hApplyGpo 
     └ 9 1.0.0.0 
      ├ 10 DSCResources 
      │  └ 11 hApplyGpo 
      │  ├ 11a hApplyGpo.psm1 
      │  └ 11b hApplyGpo.schema.mof 
      └ 10a hApplyGpo.psd1 

是否可能le合併兩個hApplyGpo位於DefaultConfiguration之內還是hApplyGpo必須是由5b引用的單獨資源(模塊)(Import-DscResource -ModuleName hApplyGpo)?

如果有可能,複合資源結構中的哪些位置應該包含自定義資源中的文件?我的直接想法是將11與5合併,但是hApplyGpo.psd1(5a和10a)會發生什麼情況。

TIA

回答

1

複合資源模塊具有與自定義腳本資源模塊相同的結構。唯一的區別是沒有定義Get,Set和Test-TargetResource函數的PSM1文件。您可以簡單地將DSCResources文件夾內的文件夾從自定義資源模塊複製到複合資源的DSCResources文件夾,反之亦然。

例如,檢查我在Github上的cWindowsOS模塊。它將自定義資源與複合資源組合在同一資源模塊中。

0

@ravikanth,感謝您的意見,但是,對我而言,這不是一個完整的解決方案,因爲我的資源有多個複合資源和多個資源。 this答案中的關鍵是在複合資源中使用Import-DscResource -Name {resourcename}而不是Import-DscResource -ModuleName {modulename}

發佈以來這個問題,創建新的自定義資源,含複合資源,現在看起來像我已經做了公平位:

… Modules 
    └ hMyResource 
     ├ DSCResources 
     │ ├───crApplyGpo 
     │ │  crApplyGpo.psd1 
     │ │  crApplyGpo.schema.psm1 
     │ │ 
     │ ├───crUpdateDriveLetter 
     │ │  crUpdateDriveLetter.psd1 
     │ │  crUpdateDriveLetter.schema.psm1 
     │ │ 
     │ ├───ARC_hApplyGpo 
     │ │  ARC_hApplyGpo.psm1 
     │ │  ARC_hApplyGpo.schema.mof 
     │ │ 
     │ └───ARC_hUpdateDriveLetter 
     │   ARC_hUpdateDriveLetter.psm1 
     │   ARC_hUpdateDriveLetter.schema.mof 
     │ 
     ├ hMyResource.psd1 
     └ hMyResource.psm1 

crApplyGpo.schema.psm1爲例:

Configuration crApplyGpo 
{ 
    [cmdletbinding()] 
    Param 
    (
     [ValidateSet("Present","Absent")] 
     [String]$Ensure = "Present" 
    ) 

    Import-DscResource -Name hApplyGpo 
    #Import-DscResource -ModuleName hMyResource #This doesn't work in a composite resource 

    hApplyGpo hApplyGpo 
    { 
     RegistryValue = 0 
     Ensure = $Ensure 
    } 
} 

然而,在 「頂級」 配置,我用Import-DscResource -ModuleName hMyResource

HTH