first DSC config..no MOF created

I’m trying to get a first DSC config working and while I can get it to run cleanly and create an output directory. I don’t get any MOF files.

I have a pull server setup, etc… and all that seems to be okay. My config script is just using a “File” source to pull in some files. I’m using “ConfigurationNames” in my LCMs. So, if the LCM pulls this file then I want it to apply. However, that’s step 2 :slight_smile:

PS v5 is used.

My script looks like this:

##define nodes
$ConfigData = 
@{
AllNodes = 
@(
    @{
        #applies to all nodes
        NodeName = "*";

        #install files to
        InstallDest = "C:\\Program Files\Zabbix\\";


    }
);

#define some variable(s) that are global to the config
NonNodeData = 
@{
    #resource location - Zabbix EXE files (copy all .exe files)
    InstallFiles = "\\\\networkfilepath\\Zabbix\Agent\\3.0.0\win64\\";


 }   
} 

Configuration Install_Zabbix_Agent
{
#load DSC resources  (Get-DscResource shows all available Modules and names)
#Import-DscResource -ModuleName PSDesiredStateConfiguration -Name Script;

#all nodes using this DSC
Node $AllNodes.NodeName
{

    #file resource
    File CreateZabbixDir
    {

        Ensure = "Present";
        Type = "Directory";
        CheckSum = "SHA-1";
        SourcePath = $ConfigurationData.NonNodeData.InstallFiles;
        DestinationPath = $Node.InstallDest;


    }

}
}
#call the config
Install_Zabbix_Agent

I run the .ps1 and I don’t get any MOF files. Just a empty directory. No errors.

In the $ConfigData section, you’re missing a node with the real name. To create a mof file you must supply a node name, be it local host or actual server name.

Stating NodeName="*" only means that everything that follows will be settings available for all the rest of the nodes. Else, logically running your script will create an infinite number of mof files :slight_smile:

Thanks. I thought it would just create a Install_Zabbix_Agent.mof .

So, I will drop the “ConfigData” section as I want a MOF file that I will apply via ConfigurationNames and the LCM config will decide which MOF(s) to pull.

This then creates the single MOF file in question.

The mof file will always follow the nodename. you either supply the nodename via the $ConfigData or as a parameter to the command.

When you want to use it in conjunction with ConfigurationNames, use localhost as the node name, it will create a localhost.mof, you then rename it to what ever you want to match the value you placed in the ConfigurationNames in the LCM script

Thanks.