NOTE: This page is no longer being updated. To install the latest version of DSC Resource Kit, please use the PowerShell Gallery. If you need to report issues or would like to contribute to development, check out our GitHub Repositories.

Introduction

Interested in trying out Windows PowerShell Desired State Configuration (DSC)? Looking for DSC Resources to help you configure your environment? The DSC Resource Kit is a collection of experimental DSC Resources and sample configurations released by the PowerShell Team, designed to help you get started with DSC. These resources and samples allow you to configure Active Directory, SQL Server, IIS, Hyper-V, Remote Desktop, and more. The zip attached to this page contains the latest version of each resource.

All of the resources and examples in the DSC Resource Kit are provided AS IS, and are not supported through any Microsoft standard support program or service. The "x" prefix on each module and resource stands for experimental , which means that these resources may be maintained and monitored by the module owner(s) moving forward.

Questions or Comments

Please leave comments, feature requests, and bug reports for the overall DSC Resource Kit in the Q & A tab for this module.  If your question pertains to a specific resource, please leave it on that resource's Script Center page.

If you would like to modify any resources or examples in the Resource Kit, feel free. When modifying, please update the module name, resource friendly name, and MOF class name (instructions below). As specified in the license, you may copy or modify this resource as long as they are used on the Windows Platform.

For more information about Windows PowerShell Desired State Configuration, check out the blog posts on the PowerShell Blog (this is a good starting point). There are also great community resources, such as PowerShell.org , or PowerShell Magazine. For more information on the DSC Resource Kit, check out this blog post.

Installation

To install all DSC Resource Kit Modules

·      Unzip the content under $env:ProgramFiles\WindowsPowerShell\Modules folder

To confirm installation:

·      Run Get-DSCResource to see that all of the resources on this page are among the DSC Resources listed

Requirements

Most items in this release require the latest version of PowerShell (v4.0, which ships in Windows 8.1 or Windows Server 2012R2). To easily use PowerShell 4.0 on older operating systems, install WMF 4.0 . Please read the installation instructions that are present on both the download page and the release notes for WMF 4.0.

Some samples and resources in this release require the latest Windows Management Framework (WMF) 5.0 Preview release, which contains functionality that has been updated from WMF 4.0. Each module with this requirement will be clearly identified. The WMF 5.0 Preview release is available for installation on Windows 8.1 and Windows Server 2012 R2. More information about the content of the WMF 5.0 Preview is available in its dedicated release notes, included in the download links below.

Notice: the WMF 5.0 Preview Release delivered as an MSU installation package via the links below. Installing this will update the PowerShell, WMI, and WinRM components of your Windows installation. change the state of your machine, as opposed to the scripts in Resource Kit. If you choose “Open” from either the x64 or x86 direct download links, the package will be downloaded, and the install will update your system with these new components.

Disclaimer: There are some scenarios in the WMF 5.0 Preview Release that are stable, while others are experimenta and have incomplete or missing functionality. The definition of we mean by "stable" and experimental are described in this blog topic. The details for which features are in which state are also included in the dedicated release notes for each WMF 5 Preview Release.


Here is the link to the latest version of the WMF 5 Preview Release, as of this release of the DSC Resource Kit:

 

 

Description

The DSC Resource Kit consists of the following modules, which in turn contain the nested resources:

  xActiveDirectory : Allows configuration of Active Directory components.

o   xADDomain

o   xADDomainController

o   xADDomainTrust

o   xADUser

o   xWaitForADDomain

  xAdcsDeployment : is used to configure Certificate Services after the role is enabled on a Windows Server.

o   xAdcsCertificationAuthority

o   xAdcsWebEnrollment

  xAzure : Provides a method of depoying virtual machines in Microsoft Azure.

o   xAzureAffinityGroup

o   xAzureQuickVM

o   xAzureService

o   xAzureSqlDatabase

o   xAzureSqlDatabaseServerFirewallRule

o   xAzureStorageAccount

o   xAzureSubscription

o   xAzureVM

o   xAzureVMDSCConfiguration

o   xAzureVMDscExtension

  xAzurePack : Contains resources for installation and configuration of Windows Azure Pack.

o   xAzurePackSetup

o   xAzureQuickVM

o   xAzurePackAdmin

o   xAzurePackFQDN

o   xAzurePackDatabaseSetting

o   xAzurePackIdentityProvider

o   xAzurePackRelyingParty

o   xAzurePackResourceProvider

  xBitlocker : Allows you to configure Bitlocker.

o   xBLAutoBitlocker

o   xBLBitlocker

o   xBLTpm

  xChrome : Installs the Chrome browser

o   xChrome

  xComputerManagement : Allows configuration of a nodes's computer name and workgroup/domain

o   xComputer

  xCredSSP : xCredSSP resource, which enables, disables, and configures Credential Security Support Provider (CredSSP).

o   xCredSSP

  xDatabase : Allows configuration of databases

o   xDatabase

o   xDBPackage

xDHCPServer: Enables configuration of a DHCP Server.

o   xDhcpServerOption

o   xDhcpServerReservation

o   xDhcpServerScope

xDisk: Enables management of a disk drive

o   xDisk

o   xWaitforDisk

xDismFeature: Enables or disables Windows optional features.

o   xDismFeature

xDnsServer: Enables configuration of a DNS Server

o   xDnsServerSecondaryZone

o   xDnsServerZoneTransfer

xDscDiagnostics: Allows simple diagnostics of DSC Logs.

xDscResourceDesigner: Allows easy creation and testing of DSC Resources

xExchange: allows you to configure many different properties of Exchange 2013 servers, including individual server properties, databases and mount points, and Database Availability Groups.

o   xExchActiveSyncVirtualDirectory

o   xExchAutodiscoverVirtualDirectory

o   xExchAutoMountPoint

o   xExchClientAccessServer

o   xExchDatabaseAvailabilityGroup

o   xExchDatabaseAvailabilityGroupMember

o   xExchDatabaseAvailabilityGroupNetwork

o   xExchEcpVirtualDirectory

o   xExchExchangeCertificate

o   xExchExchangeServer

o   xExchImapSettings

o   xExchMailboxDatabase

o   xExchMailboxDatabaseCopy

o   xExchMapiVirtualDirectory

o   xExchOabVirtualDirectory

o   xExchOutlookAnywhere

o   xExchOwaVirtualDirectory

o   xExchPopSettings

o   xExchPowershellVirtualDirectory

o   xExchReceiveConnector

o   xExchUMService

o   xExchWaitForDAG

o   xExchWaitForMailboxDatabase

o   xExchWebServicesVirtualDirectory

o   xExchInstall

o   xExchJetstress

o   xExchJetstressCleanup

o   xExchUMCallRouterSettings

o   xExchWaitForADPrep

xFailOverCluster: Allows configuration of a Failover Cluster.

o   xCluster

o   xWaitForCluster

xFirefox: Allows installation of the latest Firefox browser.

o   xFirefox

xHyper-V: Allows configuration of the Hyper-V host.

o   xVhd

o   xVhdFileDirectory

o   xVMHyperV

o   xVMSwitch

xInternetExplorerHomePage : This resource enables you to set one or more IE homepages using PowerShell DSC.

o   xInternetExplorerHomePage

xJEA: Defines and configures constrained PowerShell Endpoints to enable Just Enough Admin scenarios

o   xJeaEndPoint

o   xJeaToolKit

xMySql  : allows you to setup a mysql server, database, user, and create a grant for the user. This resource requires WMF 5.0 Experimental July 2014.

o   xMySqlDatabase

o   xMySqlGrant

o   xMySqlProvision

o   xMySqlServer

o   xMySqlUser

xNetworking: Allows configuration of a node's IP Address, DNS Address, and Firewall Rules.

o   xDnsServerAddress

o   xFirewall

o   xIPAddress

xOU: Allows creation and configuration of an Active Directory Organizational Unit (OU)

o   xADOrganizationalUnit

xPendingReboot: Checks to see if a reboot is pending and allows DSC to predictably handle the condition

o   xPendingReboot

xPhp: allows you to setup php in iis.

o   xPhp

xPowerShellExecutionPolicy: allows you to setup php in iis.

o   xPowerShellExecutionPolicy

xPSDesiredStateConfiguration: Contains improvements to built-in DSC Resources, as well as a resource for configuring a DSC "Pull Server."

o   xArchive

o   xDscWebService

o   xFileUpload

o   xGroup

o   xPackage

o   xWindowsProcess

o   xPSSessionConfiguration

o   xRemoteFile

o   xServiceResource

o   xWindowsOptionalFeature

xReleaseManagement: Resources created to work with the Release Management features of Visual Studio

o   xTokenize

xRemoteDesktopAdmin: Allows configuration of remote desktop and the related Windows firewall settings

o   xRemoteDesktopAdmin

xRemoteDesktopSessionHost: Allows configuration of RDSH components.

o   xRDRemoteApp

o   xRDSessionCollection

o   xRDSessionCollectionConfiguration

o   xRDSessionDeployment

xSafeHarbor: This module contains the configurations that allow you to setup the SafeHarbor example. No new resources are included.

xSCDPM : Contains resources for installation of System Center Service Management Automation (DPM).

o   xSCDPMConsoleSetup

o   xSCDPMDatabaseServerSetup

o   xSCDPMServerSetup

xSCOM : Contains resources for installation of System Center Operations Manager (OM).

o   xSCOMConsoleSetup

o   xSCOMManagementServerSetup

o   xSCOMReportingServerSetup

o   xSCOMWebConsoleServerSetup

o   xSCOMManagementServerUpdate

o   xSCOMWebConsoleServerUpdate

o   xSCOMConsoleUpdate

o   xSCOMAdmin

o   xSCOMManagementPack

xSCSMA : Contains resources for resources for installation of System Center Service Management Automation (SMA).

o   xSCSMAPowerShellSetup

o   xSCSMARunbookWorkerServerSetup

o   xSCSMAWebServiceServerSetup

xSCSPF : Contains resources for resources for installation of System Center Service Provider Foundation (SPF).

o   xSCSPFServer

o   xSCSPFServerSetup

o   xSCSPFServerUpdate

o   xSCSPFSetting

o   xSCSPFStamp

xSCSR : Contains resources for installation of System Center Service Reporting (SR).

o   xSCSRServerSetup

o   xSCSRServerUpdate

xSCVMM : Contains resources for installation of System Center Virtual Machine Manager (VMM).

o   xSCVMMAdmin

o   xSCVMMConsoleSetup

o   xSCVMMConsoleUpdate

o   xSCVMMManagementServerSetup

o   xSCVMManagementServerUpdate

o   xSCVMMOperationsManagerServer

xSmbShare: Allow's configuration of a SMB Share.

o   xSmbShare

xSqlPs: Allows configuration of SQL Server

o   xSqlHAEndPoint

o   xSqlHAGroup

o   xSqlHAService

o   xSqlServerInstall

o   xWaitForSqlHAGroup

xSqlServer: Resources for System Center-compliant setup of SQL Server

o   xSQLServerFirewall

o   xSQLServerRSSecureConnectionLevel

o   xSQLServerSetup

o   xSQLServerFailoverClusterSetup

o   xSQLServerRSConfig

xSystemSecurity: Allows configuration of User Account Control prompts and IE Enhanced Security Configuration.

o   xUAC

o   xIEEsc

xTimeZone: Allows setting the system time zone in Windows using PowerShell DSC

o   xTimeZone

xWebAdministration: Allows configuration of IIS.

o   xIisModule

o   xWebApplication

o   xWebAppPool

o   xWebConfigKeyValue

o   xWebsite

o   xWebVirtualDirectory

xWindowsupdate : Handles installation of  a windows update or hotfix.

o   xHotfix

xWindowsRestore : Use PowerShell DSC to configure system restore, create or remove a restore point.

o   xSystemRestore

o   xSystemRestorePoint

xWinEventLog: Allows configuration of the Windows Event Logs.

o   xWinEventLog

xWordPress: Resources and sample configurations to show end-to-end deployment of the common wordpress site. This resource requires WMF 5.0 Experimental July 2014.

o   xWordPressSite

o   xIisWordPressSite

cFileShare: Allow configuration of a file share and share permission rules.

o   cCreateFileShare

o   cSetSharePermissions

Renaming Requirements

When making changes to these resources, we suggest the following practice:

1.     Update the following names by replacing MSFT with your company/community name and replacing the “x” with "c" (short for "Community") or another prefix of your choice:

o   Module Name (ex: xNetworking becomes cNetworking)

o   Resource Folder (ex: MSFT_xIPAddress becomes Contoso_cIPAddress)

o   Resource Name (ex: MSFT_xIPAddress becomes Contoso_cIPAddress)

o   Resource Friendly Name (ex: xIPAddress becomes cIPAddress)

o   MOF class name (ex: MSFT_xIPAddress becomes Contoso_cIPAddress)

o   Filename for the <resource>.schema.mof (ex: MSFT_xIPAddress .schema.mof becomes Contoso_cIPAddress.schema.mof)

2.     Update module and metadata information in the module manifest

3.     Update any configuration that use these resources

We reserve resource and module names without prefixes ("x" or "c") for future use (e.g. "MSFT_xIPAddress" or "IPAddress").  If the next version of Windows Server ships with a "IPAddress" resource, we don't want to break any configurations that use any community modifications.  Please keep a prefix such as "c" on all community modifications.

An Example Configuration

This example demonstrates how to use the xWebsite resource to set up a new IIS website.  You’ll find many more examples in download, or on each module’s Script Center page.

 

PowerShell
Edit|Remove
configuration Sample_xWebsite_NewWebsite  
{  
    param  
    (  
        # Target nodes to apply the configuration  
        [string[]]$NodeName = 'localhost',  
  
        # Name of the website to create  
        [Parameter(Mandatory)]  
        [ValidateNotNullOrEmpty()]  
        [String]$WebSiteName,  
  
        # Source Path for Website content  
        [Parameter(Mandatory)]  
        [ValidateNotNullOrEmpty()]  
        [String]$SourcePath,  
  
        # Destination path for Website content  
        [Parameter(Mandatory)]  
        [ValidateNotNullOrEmpty()]  
        [String]$DestinationPath  
    )  
  
    # Import the module that defines custom resources  
    Import-DscResource -Module xWebAdministration  
  
    Node $NodeName  
    {  
        # Install the IIS role  
        WindowsFeature IIS  
        {  
            Ensure          = "Present"  
            Name            = "Web-Server"  
        }  
  
        # Install the ASP .NET 4.5 role  
        WindowsFeature AspNet45  
        {  
            Ensure          = "Present"  
            Name            = "Web-Asp-Net45"  
        }  
  
        # Stop the default website  
        xWebsite DefaultSite   
        {  
            Ensure          = "Present"  
            Name            = "Default Web Site"  
            State           = "Stopped"  
            PhysicalPath    = "C:\inetpub\wwwroot"  
            DependsOn       = "[WindowsFeature]IIS"  
        }  
  
        # Copy the website content  
        File WebContent  
        {  
            Ensure          = "Present"  
            SourcePath      = $SourcePath  
            DestinationPath = $DestinationPath  
            Recurse         = $true  
            Type            = "Directory"  
            DependsOn       = "[WindowsFeature]AspNet45"  
        }         
  
        # Create the new Website with HTTPS  
        xWebsite NewWebsite  
        {  
            Ensure          = "Present"  
            Name            = $WebSiteName  
            State           = "Started"  
            PhysicalPath    = $DestinationPath  
            BindingInfo     = MSFT_xWebBindingInformation  
                             {  
                               Protocol              = "HTTPS"  
                               Port                  = 8443  
                               CertificateThumbprint ="71AD93562316F21F74606F1096B85D66289ED60F"  
                               CertificateStoreName  = "WebHosting"  
                             }  
            DependsOn       = "[File]WebContent"  
        }  
    }  
}