Find DSC resources that are available in the PowerShell Gallery


Summary: Learn how to use Windows PowerShell commands to easily find Desired State Configuration resources that are available in the PowerShell Gallery.

One of the cool things about Windows PowerShell is that it makes exploring data easy. And everything is data in some form. Whether it is local or remote, whether it is plain text; a .csv, .tsv, or .xml file…whatever it is, it is still data.

Even a list of cmdlets, functions, scripts, modules, or whatever in the Windows PowerShell world is data—and from a usability stand point, it is valuable data. So I can use Windows PowerShell to learn about what I can do with Windows PowerShell. The PowerShell Gallery makes that an even richer proposition. The PowerShell Gallery home page is shown here:

Image of menu

Use Find-DSCResource

When I use the Find-DSCResource command, a long list of DSC resources come back:

Image of command output

In fact, when I run it, I get back 461 DSC resources:

PS C:\> Find-DscResource | measure

Count    : 461

Average  :

Sum      :

Maximum  :

Minimum  :

Property :

That is quite a lot of information to scroll through. So, to get an idea of how many DSC resources are in which modules, I decide to group and sort. Here is my command:

Find-DscResource | group modulename | sort count -Descending

Here is the output from the command:

Image of command output

There are quite a few DSC resources in the xSharePoint and xExchange modules, it would appear. To get an idea of how many modules there, I select unique module names:

Find-DscResource | select modulename -Unique

To find how many modules I have, I add measure:

PS C:\> Find-DscResource | select modulename -Unique | measure

Count    : 119

Average  :

Sum      :

Maximum  :

Minimum  :

Property :

Wow, that is quite a lot!

Filter DSC resources

If I want to find a specific DSC resource, I can do one or two things. The first, and perhaps most obvious, is to search by module. For example, if I am interested in doing web things, I may want to find DSC resources that have the letters web in the module name:

Find-DscResource -moduleName *web*

Image of command output

It would appear that I cannot use a wildcard character for the resource name. So, when I type the following queries, I do not get anything back:

PS C:\> Find-DscResource -Name “*update*”

PS C:\> Find-DscResource -Name “*reboot*”

PS C:\> Find-DscResource -Name *reboot*

PS C:\> Find-DscResource -Name *update*

PS C:\>

But it also seems that I can use wildcard characters for the module name, for example:

Find-DscResource -moduleName *update*

Image of command output

But the easier way to do things is to use the -Filter parameter. By using this, I can find things I would not otherwise imagine. Here are a few example commands:

Find-DscResource -Filter “update”

Find-DscResource -Filter “reboot”

The cool thing is that the -Filter parameter will search the ModuleName field and the Resource name fields. Here is the output from the two commands:

Image of command output

The good news is that there are now hundreds of DSC resources in the PowerShell Gallery. The even better news is that I can use Windows PowerShell to find them.

I invite you to follow me on Twitter and Facebook. If you have any questions, send email to me at scripter@microsoft.com, or post your questions on the Official Scripting Guys Forum. Also check out my Microsoft Operations Management Suite Blog. See you tomorrow. Until then, peace.

Ed Wilson, Microsoft Scripting Guy

Comments (0)

Skip to main content