Thursday, April 24, 2014

Configuring Dependencies in "Desired State Configuration" script in PowerShell


1.  Introduction of Windows PowerShell “Desired State Configuration”.

2.  Installing Windows PowerShell 4.0 [Windows Management Framework 4.0].

3.  Getting Started With Desired State Configuration: DSC Syntax.

4.  Review of Desired State Configuration: The 3 easy steps.

5.  Write your First Desired State Configuration Script using ROLE Resource.

6.  Run your first "DSC" PowerShell Script.



w-alphabet-kids-coloring-pictures-printablee learn the basics of the “DSC”, we learn how to write our first DSC script and how to run and deploy it.

The one of the most uber-cool feature of the "Desired State Configuration" is the power of setting dependencies. Yes, you read right, set dependencies.

In "Desired State Configuration" scripts , we can set dependencies of one resource  to another resource.

For example : If you want to install IIS services on your server, and you want to install IIS services after the installation of DNS server roles, in that case you set dependency on the IIS windows feature script block to check for DNS first and before installing, if DNS role is not installed for for it's installation and then run it.


How to set the dependencies?

Most of the DSC resource has the parameter “DependsOn”. We need to use this parameter  to set dependencies.


What is the Syntax of the “DependsOn”?

The Syntax of the DependsOn is.


DepedsON = [DSC Resource Type]Name of DSC Resource Block Name




Let’s get started.


To check and set the dependencies, I written a small script. This script install FAX server role on our server, and once the Roles in installed, it will show us a small message that FAX server roles is installed successfully.

For showing this message, we are using LOG DSC resource, this LOG resource do support only two parameters, "Message" and "DependsON".



This is our script

Configuration settingDepend {


    Node 'Posh-Demo'



           WindowsFeature installFax



            Name = 'Fax'

            Ensure = 'Present'





            Log myMessage



                Message = "The Fax Service Role is installed, Now we can start using fax."

                DependsOn = "[WindowsFeature]installFax"















I am not going in details on how this script is written and we already had discussed in our previous blog posts.

The only new in this script is that we are using the “DependsOn” parameter in the LOG resource block.



24-04-2014 12-41-16


You can see how we have set dependency in the Log Resource.




You can see that “Fax Server” service is not installed on the server yet.




Run the script, and you can see that it created the folder and the MOF file is created too.

24-04-2014 11-35-00


Not’ let’s start the deployment of the MOF file using the below Start-DscConfiguration command.


Start-DscConfiguration .\settingDepend -Wait -Verbose 


After running the command it has started the deployment of the MOF files.

24-04-2014 11-35-49


And you can see it “Log” the message after the installation of the Fax server roles.


24-04-2014 12-35-56


And if you check our server, the FAX role is installed too.

24-04-2014 12-17-03


That’s all for today  J , See you in next blog post.





Aman Dhally

If you like, you can follow me on Twitter and Facebook. You can also check my “You Tube channel for PowerShell video tutorials. You can download all of my scripts from “Microsoft TechNet Gallery”.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.