Two Clsss Dsc Resources in one module

This topic contains 6 replies, has 4 voices, and was last updated by Profile photo of GS GS 6 months, 2 weeks ago.

  • Author
    Posts
  • #35394
    Profile photo of Aaron Stainback
    Aaron Stainback
    Participant

    I'm trying to have the following folder structure with Dsc Class Resources in DscResource1 and DscResource2. Everything I try with NestedModules, etc.. I keep getting errors from the LCM "Failed to create an object of PowerShell class IssRobocopy". Everything works fine if I just keep the module name files and the resource name file the same. This seems very restrictive.

    –DscModule
    —DscModule.psd1
    —DscResource1.psm1
    —DscResource2.psm1

  • #35404
    Profile photo of Dave Wyatt
    Dave Wyatt
    Moderator

    For class-based resources, all of the class definitions need to be in a single psm1 file (which should be referenced by the RootModule element in your manifest, and probably safest to also name it DscModule.psm1). I don't know if / when that's going to change.

    However, you can write other PowerShell functions in separate files, and just have the stuff in DscModule.psm1 be the simple shell of the classes (much like a schema.mof file in the old resources). Something like this:

    [DscResource()]
    class DscResource1
    {
        [DscProperty(Key)]
        [string] $Param1
        
        [void] Set()
        {
            Invoke-DscResource1Set -Param1 $this.Param1 # etc
        }
    }
    
  • #35405
    Profile photo of Dave Wyatt
    Dave Wyatt
    Moderator

    Deliberately left that code short, but you get the idea.

  • #35412
    Profile photo of Aaron Stainback
    Aaron Stainback
    Participant

    Thanks, that's very disappointment limitation of the class dsc model.

  • #35529
    Profile photo of Raimund Andree
    Raimund Andree
    Participant

    I am not sure if I am getting this right. I want to combine some class based DSC resources in one PowerShell module. Are you saying that this is not possible?

  • #35548
    Profile photo of Dave Wyatt
    Dave Wyatt
    Moderator

    It's fine to have multiple classes in one module. The class definitions just all have to be in the same PSM1 file; you can't currently split them into multiple ps1 files and dot-source them from the PSM1, or anything along those lines.

  • #40287
    Profile photo of GS
    GS
    Participant

You must be logged in to reply to this topic.