Welcome to Part 5 of the Building Clouds blog series on Windows PowerShell Desired State Configuration. Here is a quick recap of what has been published before this post:
Part 1 – Information about DSC
Part 2 – Authoring DSC Resources when Cmdlets Already Exist
Part 3 – Testing DSC Resources
Part 4 – How-To use PowerShell DSC from your workstation to test PowerShell JEA, in Azure
What is a DSC Resource?
With any new technology there is a glossary of terms to learn. DSC is pretty straightforward but “Resource” is key to this topic.
- DSC Resource – a PowerShell module constructed in a specific way that provides Get, Set, and Test functions, and a schema file that helps DSC enumerate the properties that are available to be configured. Resources can also be based on WMI or Python in the case of Linux.
Or to put it more simply, Resources are the instructions that tell DSC how to manage stuff, like settings and programs. If you want DSC to copy a file you would use the File Resource. If you want DSC to configure a registry setting you would use the Registry Resource.
For a deeper dive on Resources, I would recommend the DSC Resource documentation on TechNet and The DSC Book, as well as Bing since more information and articles are being published literally daily on this topic.
Point in Time List of DSC Resources
Have you ever heard this before? “We will be looking at DSC when there are more resources available.” This statement is looking for a Tipping Point. If that’s the case but you don’t know where to look or you have been too busy, you might not have noticed the increasing number of resources available for DSC.
To assist your discovery, I am publishing a list of current DSC resources and what they do. Just like the first article in this series this will be a moving target. As soon as I hit publish I will be out of date and I won’t promise to curate this list. The PowerShell team and the PowerShell community are publishing new resources aggressively. The point is to emphasize that the list has grown considerably in a very short period of time.
If you haven’t looked in a while, you might want to take a glance because there is a good chance the resources you were waiting for have become available. In fact, Wave 4 of the DSC Resource Kit was recently released.
If you take nothing else away from this post – remember where to look for DSC resources!
- DSC Resources shipped with Windows
- Resources available in the PowerShell DSC Resource Kit
- Resources available from the community GitHub Repository
DSC Resources shipped with Windows
These resources ship with PowerShell DSC, either via WMF or inside Windows installations.
|Archive||Provides a mechanism to unpack archive (.zip) files at a specific path|
|Environment||Provides a mechanism to manage system environment variables.|
|File||Provides a mechanism to manage files and folders on the target node.|
|Group||Provides a mechanism to manage local groups on the target node.|
|Log||Provides a mechanism to write messages to the Microsoft-Windows-Desired State Configuration/Analytic event log.|
|Package||Provides a mechanism to install or uninstall packages, such as Windows Installer and setup.exe packages, on a target node.|
|Registry||Provides a mechanism to manage registry keys and values on a target node.|
|Script||Provides a mechanism to run Windows PowerShell script blocks on target nodes.|
|Service||Provides a mechanism to manage services on the target node.|
|User||Provides a mechanism to manage local user accounts on the target node.|
|WindowsFeature||Provides a mechanism to ensure that roles and features are added or removed on a target node.|
|WindowsProcess||Provides a mechanism to configure processes on a target node.|
Resources available in the PowerShell DSC Resource Kit
These resources are published to the online gallery. Additional information about how to use them is available at the bottom of the following page – http://gallery.technet.microsoft.com/scriptcenter/DSC-Resource-Kit-All-c449312d.
|xADDomain||Create new Active directory forest configuration or new Active directory domain configuration.|
|xADDomainController||Install a Domain Controller in Active Directory.|
|xADUser||Add or Remove an Active Directory user.|
|xWaitForADDomain||Waits for a new domain to become available.|
|xADDomainTrust||Create and configure Active Directory domain trusts.|
|xAzureAffinityGroup||Creates and configures an Azure Affinity Group.|
|xAzureQuickVM||Provision an Azure Virtual Machine with minimal input.|
|xAzureService||Create and configure an Azure Cloud Service.|
|xAzureStorageAccount||Create and configure an Azure Storage Account.|
|xAzureSubscription||Register an Azure subscription from a .publishsettings file to the computer.|
|xAzureVM||Create and configure an Azure virtual machine|
|xComputer||Rename a computer and add it to a domain or workgroup.|
|xDatabase||Handles creation/deletion of a database using a dacpac or sql connection string.|
|xDBPackage||Allows extraction of a dacpac or import of a bacpac from a database.|
|xDhcpServerScope||Create and configure a DHCP Scope|
|xDhcpServerReservation||Create and configure DHCP Reservations|
|xDhcpServerOption||Create and configure DHCP Scope Options|
|xDnsServerSecondaryZone||Create and configure a DNS Secondary Zone|
|xDnsServerZoneTransfer||Configure DNS server Zone Transfer|
|xCluster||Create and configurate a failover cluster.|
|xWaitForCluster||Waits for a new failover cluster to become available.|
|xVhd||Create a virtual disk.|
|xVhdFileDirectory||Copy contents in to a virtual disk.|
|xVMHyperV||Create and set properties of a virtual machine.|
|xVMSwitch||Create and configure a virtual switch.|
xJEA (Just Enough Administration)
|xJeaEndPoint||Create and configure JEA Endpoints|
|xJeaToolkit||Create and configure JEA Toolkits|
|xDnsServerAddress||Configure the DNS settings of a network adapter.|
|xFirewall||Configure host firewall rules.|
|xIPAddress||Configure the IP Adrress, Gateway, and Subnet Mask of a network adapter.|
|xDscWebService||Allows the configuration of an OData endpoint for DSC Service, so that a node can become a DSC Pull Server.|
|xPackage||Allows .msi and .exe software installations.|
|xProcess||Enhancement to the in box WindowsProcess resource and allows you to run a process under the context of a user|
|xPSEndPoint||Allows you to create PowerShell session configuration. This resource allows you to specify RunAs account, startup script, SDDL to allow users to connect to this session configuration, as well as ability to restrict the remote access to it.|
|xArchive||Allows you to create archive files as well as expand existing archive files.|
|xService||Enhancement on the in box Service resource and allows you to create and delete a service.|
|xRemoteFile||Allows you to download a file from HTTP or HTTPS locations to a local destination. It allows you to specify the user agent and headers when sending a web request.|
|xRDSessionDeployment||Creates and configures a deployment in RDSH.|
|xRDSessionCollection||Creates a RDSH collection.|
|xRDSessionCollectionConfiguration||Allows configuration of a RDSH collection.|
|xRDRemoteApp||Publish applications for your RDSH collection.|
|xSmbShare||Setup and configure an SMB Share.|
|xSqlHAEndPoint||Configure the given instance of SQL high availability service to listen port 5022 with given name, and assigning users that are allowed to communicate through the SQL endpoint.|
|xSqlHAGroup||Configure a SQL High Availability Group|
|xSqlHAService||Enable SQL High Availability (HA) service on a given SQL instance.|
|xSqlServerInstall||Install SQL Enterprise on a target machine.|
|xWaitForSqlHAGroup||Waits for SQL HA group to be ready by checking the state of the HA group of a given name in a given interval till either the HA group is discoverable or the number of retries reached its maximum.|
|xUAC||Handles how and when the User Account Control Windows Prompt shows up or doesn’t show up.|
|xIEEsc||Enables or disables IE Enhanced Security Configuration.|
|xWebsite||Allows you to manage IIS Websites.|
|xWebAppPool||Allows you to manage IIS App Pools.|
|xWebVirtualDirectory||Allows you to manage IIS Web Virtual Directories.|
|xWebApplication||Allows you to manage IIS Web Applications.|
|xWebConfigKeyValue||Allows you to update key value pairs in the AppSettings section of Web.Config.|
|xWinEventLog||Configure the Windows Event Log|
Resources available from the community GitHub Repository
These resources are contributed by the community to a GitHub repo maintained by PowerShell.org, available at the following page – https://github.com/powershellorg/dsc
There is some overlap. That is on purpose. When the community would like to extend either a stock resource or one from the resource kit, the resource is renamed by pre-pending a “c” to signify “community” and someone contributes work to extend what is available.
If you are looking for something and it is not available from these sources (and you can’t find it elsewhere using Bing), please comment a request on the PowerShell.org article below.
We Want Your DSC Resource Wish List!