Creating DSC Resource Snippets for the PowerShell ISE

Posted on by Jeff Hicks in PowerShell

Without a doubt creating configurations for Desired State Configuration (DSC) in PowerShell 4.0 is one of the hottest topics in the PowerShell world these days. But as is often the case with new technologies, discovering what to use can be a challenge. Fortunately for PowerShell and DSC this does not have to be difficult task.

Using the Get-DSCResource cmdlet

In a DSC configuration you need to define resources for the managed nodes. You can use the Get-DSCResource cmdlet to discover resources installed locally. Even though you will be creating configurations for servers, you will most likely be using the PowerShell ISE on a Windows 8.1client. Given that you will most likely have the same DSC resource modules installed locally.

One of the reasons for this is so that you can discover the resource syntax. The Get-DSCResource cmdlet can either display information about a resource or provide its syntax. Let’s say you are creating a configuration that will use the xSMBShare resource. You can see the syntax like this:

Creating DSC Resource Snippets for the PowerShell ISE

You can then copy and paste this into the ISE. Or copy it directly to the clipboard.

Another option is to use a function in the ISE to get the syntax and paste it into the current document.

Run the function specifying a resource name and the syntax will be pasted into the current file. Or how about this? Use Out-GridView as an object picker for the resources you want to use?

When I click OK the syntax for the selected resources will be inserted into my current file. This will run much faster in PowerShell 5.0 but gets the job done. All I need to do is edit each entry. But I have an approach I like even better. Why not turn each resource syntax into an ISE snippet?

With an ISE Snippet you press Ctrl+J, find the snippet, press Enter and the text is inserted into the current file. My initial thought was to use the Syntax string with the New-ISESnippet cmdlet. But then I’d have to mess around with parsing the output to find something to use for a title. So instead, I came up with this function.

This is something you really only need to run once and it must be done from the PowerShell ISE. Or you can re-run it if you install new or updated resource modules. The function takes the name of a resource and constructs the syntax from the resource properties. Mandatory properties will be indicated with a *. The function will create a snippet file in the default user location using the resource name as the title. The module and vendor name will be included in the description. You can use it to create a single snippet.

Or create snippets for everything.

The function will automatically import them into your current ISE session so you can use them immediately. The next time you start the ISE they should automatically be available. Once run, you can easily insert new resources.

All of the snippets will start with DSC. Once inserted, edit as necessary. With this, creating configurations for DSC is much, much easier and faster. The function has full help and examples. I definitely hope you’ll try this out and let me know what you think.


Don't have a login but want to join the conversation? Sign up for a Petri Account