2017-08-14 1 views
0

Ich habe eine zusammengesetzte Ressource. Nach meinem Verständnis ist eine zusammengesetzte Ressource eine Sammlung von Konfigurationen, die wie eine Ressource behandelt werden. Ich denke an Ressourcen als PowerShell-Modul (aber nicht). Die aktuelle Dateistruktur wie folgt aussieht:DSC: Hinzufügen einer benutzerdefinierten Ressource zu einer zusammengesetzten Ressource

Composite-Ressource:

…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 

Ich habe gerade eine benutzerdefinierte DSC-Ressource mit xDSCResourceDesigner geschrieben, dass die folgende Dateistruktur erzeugt hat:

benutzerdefinierte Ressource:

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

Ist es möglich le, um die beiden darin zu verschmelzen, dass hApplyGpo innerhalb DefaultConfiguration residiert oder muss hApplyGpo eine separate Ressource (Modul) sein, die von 5b referenziert wird (Import-DscResource -ModuleName hApplyGpo)?

Wenn es möglich ist, wo in der zusammengesetzten Ressourcenstruktur sollten die Dateien von Custom Resource gehen? Mein direkter Gedanke ist, 11 mit 5 zu verschmelzen, aber was passiert mit hApplyGpo.psd1 (5a und 10a).

TIA

Antwort

1

Das zusammengesetzte Ressourcenmodul hat die gleiche Struktur wie das benutzerdefinierte Skript Ressourcenmodul. Der einzige Unterschied besteht darin, dass es keine PSM1-Datei gibt, die die Funktionen Get, Set und Test-TargetResource definiert. Sie können Ordner im Ordner DSCResources einfach vom benutzerdefinierten Ressourcenmodul in den Ordner DSCResources der zusammengesetzten Ressource kopieren oder umgekehrt.

Für ein Beispiel, überprüfen Sie das cWindowsOS Modul, das ich auf Github habe. Es kombiniert benutzerdefinierte Ressourcen mit zusammengesetzten Ressourcen im selben Ressourcenmodul.

0

@ravikanth, Vielen Dank für Ihre Eingabe, aber für mich war es nicht die komplette Lösung, da meine Ressource mehrere zusammengesetzte Ressourcen und mehrere Ressourcen hat. Der Schlüssel, der in der this Antwort begraben wird, soll Import-DscResource -Name {resourcename} im Gegensatz zu Import-DscResource -ModuleName {modulename} in der zusammengesetzten Ressource verwenden.

ich ein gutes Stück seit der Veröffentlichung dieser Frage gemacht haben, eine neue benutzerdefinierte Ressource zu schaffen, um die zusammengesetzten Ressourcen enthält, die etwas sieht jetzt aus wie:

… 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 als Beispiel:

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 
    } 
} 

jedoch in der "Top-Level" Konfiguration verwende ich Import-DscResource -ModuleName hMyResource

HTH

Verwandte Themen