DSC Resource Kit – Anniversary Release

We’ve just updated the DSC Resource Kit to celebrate our 1 year open-source anniversary!

The DSC Resource Kit has come a long way in a year. Originally, DSC started with only in-box resources. To make these resources easier to update, some were moved to TechNet’s Script Center and became the DSC Resource Kit. Finally in April 2015, the DSC Resource Kit was open-sourced to the community on GitHub with all modules available to download in the PowerShell Gallery.

Now, the DSC Resource Kit has passed it’s first anniversary as open-source, and what a year it’s been! We now have 302 DSC Resources across 52 modules! In the past year, our community has helped to merge 702 pull requests and close 297 issues! It’s all thanks to the hard work of our wonderful contributors both in and outside Microsoft.

In addition to passing its 1 year open-source anniversary, the DSC Resource Kit has hit yet another important milestone! We have added our first brand new module (xDFS) made completely by the DSC community! This is a huge achievement! Thank you!!! We love to see the care and passion our contributors put into their work.

This update marks some of our biggest numbers yet!
Since our last update in April, there have been 111 merged pull requests with 71 closed issues.
23 DSC modules have been updated, including 23 new resources.

The modules updated in this release are:

  • xActiveDirectory
  • xAdcsDeployment
  • xCertificate
  • xChrome
  • xComputerManagement
  • xDFS
  • xDhcpServer
  • xDnsServer
  • xDscDiagnostics
  • xDSCResourceDesigner
  • xExchange
  • xFailOverCluster
  • xFirefox
  • xNetworking
  • xPhp
  • xPSDesiredStateConfiguration
  • xRobocopy
  • xSqlPs
  • xSQLServer
  • xStorage
  • xTimeZone
  • xWebDeploy
  • xWindowsUpdate

For a detailed list of what resources and fixes have been implemented, see the “What Has Recently Been Released?” section below.

We strongly encourage you to update to the newest version of all modules using the PowerShell Gallery, and don’t forget to give us your feedback in the comments below, on GitHub, or on Twitter (@PowerShell_Team)!

Where Can I Find All Released DSC Modules?

To see a list of all released DSC Resource Kit modules, go to the PowerShell Gallery and display all modules tagged as DSCResourceKit. You can also enter a module’s name in the search box in the upper right corner of the PowerShell Gallery to find a specific module.

Another way to find a specific module is to go directly to its URL on GitHub:
http://www.powershellgallery.com/packages/< Module_Name >

For example:
http://www.powershellgallery.com/packages/xWebAdministration

Of course, you can also always use PowerShellGet (available in WMF 5.0) to find modules with DSC Resources:

# To list all modules that are part of the DSC Resource Kit
Find-Module -Tag DSCResourceKit 
# To list all DSC resources from all sources 
Find-DscResource

How Can I Install DSC Resources From the PowerShell Gallery?

We recommend that you use PowerShellGet to install DSC resource modules:

Install-Module -Name <Module_Name>

For example:

Install-Module -Name xWebAdministration

If you have previous versions of modules installed, you can update them all by opening an elevated PowerShell prompt and using this command:

Update-Module

After installing the modules, you can discover all of the resources available to your local system by running:

Get-DscResource

As with the previous Resource Kits, all the resources are experimental. The “x” prefix in the names stands for experimental which means these resources are provided AS IS and are not supported through any Microsoft support program or service.

If there is an issue for a module you are particularly concerned about, watch the version number of the module in the PowerShell Gallery for updates. You can also file an issue against the module on GitHub to request a fix.

How Can I Find DSC Modules on GitHub?

We’ve open-sourced the development of DSC resources on GitHub. You can see the most recent state of all resources by going to their GitHub pages at:
https://github.com/PowerShell/< Module_Name >

For example, for the xCertificate module, go to:
https://github.com/PowerShell/xCertificate.

All DSC modules are also listed as submodules of the DscResources repository in the xDscResources folder so that you can see them in one place.

How Can I Contribute?

You are more than welcome to contribute to the development of DSC resource modules. There are several different ways you can help. You can create new DSC resources or modules, add test automation, improve documentation, fix existing issues, or open new ones. Most of the information you need to get started can be found in our contributing guide.

If you would like to help, please take a look at the list of open issues for the DscResources repository. You can also check issues opened for specific modules by going to:
https://github.com/PowerShell/< Module_Name >/issues

For example:
https://github.com/PowerShell/xPSDesiredStateConfiguration/issues

Your help in developing DSC is much appreciated!

What Has Been Recently Released?

You can see a detailed summary of all recent changes in the table below.
If you want to see a change log for previous versions, go to the GitHub repository page for a given module (see the “How Can I Find DSC Modules on GitHub?” section above for details).

Module Name Version Description
xActiveDirectory 2.11.0.0
  • xWaitForADDomain: Made explicit credentials optional and other various updates
xAdcsDeployment 1.0.0.0
  • Moved Examples folder into root.
  • Removed legacy xCertificateServices folder.
  • Prevented Unit tests from Violating PSSA rules.
  • MSFT_xAdcsWebEnrollment: Created unit tests based on v1.0 Test Template. Update to meet Style Guidelines and ensure consistency. Updated to IsSingleInstance model. Breaking change
  • MSFT_xAdcsOnlineResponder: Update Unit tests to use v1.0 Test Template. Unit tests can be run without AD CS installed. Update to meet Style Guidelines and ensure consistency.
  • Usage of WinRm.exe replaced in Config-SetupActiveDirectory.ps1 example file with Set-WSManQuickConfig cmdlet.
xCertificate 2.0.0.0
  • Breaking Change – Updated xPfxImport Store parameter is now a key value making it mandatory
  • Updated xPfxImport with new Ensure support
  • Updated xPfxImport with support for the CurrentUser value
  • Updated xPfxImport with validationset for the Store parameter
  • Added new resource: xCertificateImport
xChrome 1.1.0.0
  • Added missing dependency on xPSDesiredStateConfiguration
xComputerManagement 1.6.0.0
  • Added the following resources:
    • MSFT_xOfflineDomainJoin resource to join computers to an AD Domain using an Offline Domain Join request file.
    • MSFT_xScheduledTask resource to control scheduled tasks on the local server
  • MSFT_xOfflineDomainJoin: Corrected localizedData.DomainAlreadyJoinedhMessage name.
  • xComputer: Changed credential generation code in tests to avoid triggering PSSA rule PSAvoidUsingConvertToSecureStringWithPlainText.
  • Renamed unit test file to match the name of Resource file.
xDFS 3.0.0.0
  • Relesed as part of DSC Resource Kit
xDhcpServer 1.4.0.0
  • Bug Fix fixes localization bug in xDhcpServerScope option enumeration
xDnsServer 1.7.0.0
  • Unit tests updated to use standard unit test templates.
  • MSFT_xDnsServerZoneTransfer: Added unit tests. Updated to meet Style Guidelines.
  • MSFT_xDnsARecord: Removed hard coding of Localhost computer name to eliminate PSSA rule violation.
xDscDiagnostics 2.3.0.0
  • Renamed Get-xDscDiagnosticsZip to New-xDscDiagnosticsZip CmdLet and aliased to
  • Get-xDscDiagnosticsZip to prevent breaks
  • Added the following datapoint to New-xDscDiagnosticsZip:
    • Collected local machine cert thumbprints
    • Collected installed DSC resource version and path information
    • Collected System event log
  • Added more detailed tests for New-xDscDiagnosticsZip
  • Added Unprotect-xDscConfigurtion to decrypt current, pending or previous mofs
xDSCResourceDesigner 1.9.0.0
  • Fixed issue where using ValidateSet with type string[] would throw an error
xExchange 1.7.0.0
  • xExchOwaVirtualDirectory
    • Added LogonFormat parameter.
    • Added DefaultDomain parameter.
  • Added FileSystem parameter to xExchDatabaseAvailabilityGroup
  • Fixed PSSA issues in MSFT_xExchAutodiscoverVirtualDirectory and MSFT_xExchActiveSyncVirtualDirectory
  • Updated xExchAutoMountPoint to disable Integrity Checking when formatting volumes as ReFS. This aligns with the latest version of DiskPart.ps1 from the Exchange Server Role Requirements Calculator.
xFailOverCluster 1.3.0.0
  • Added xClusterNetwork resource
  • Added xClusterDisk resource
  • Added xClusterPreferredOwner resource
xFirefox 1.2.0.0
  • Added logic to download installer with correct machine bits
  • Added dependency on xPSDesiredStateConfiguration
xNetworking 2.9.0.0
  • MSFT_xDefaultGatewayAddress: Added Integration Tests.
  • MSFT_xDhcpClient: Added Integration Tests.
  • MSFT_xDnsConnectionSuffix: Added Integration Tests.
  • MSFT_xDnsServerAddress: Added Integration Tests.
  • MSFT_xIPAddress: Added Integration Tests.
  • MSFT_xDhcpClient: Fixed logged message in Test-TargetResource.
  • Added functions:
    • Get-xNetworkAdapterName
    • Test-xNetworkAdapterName
    • Set-xNetworkAdapterName
xPhp 1.2.0.0
  • Added dependencies on xPSDesiredStateConfiguration and xWebAdministration
  • Renamed the resource as it was named against naming standards and resources cannot be named the same as the module.
    • xPhpProvision
xPSDesiredStateConfiguration 3.10.0.0
  • Publish-ModuleToPullServer
  • Publish-MOFToPullServer
  • Replaced New-NetFirewallRule cmdlets with netsh as this cmdlet is not available by default on some downlevel OS such as Windows 2012 R2 Core.
xRobocopy 2.0.0.0
  • Improved Test-TargetResource method to run robocopy with the same parameters as in Set-TargetResource
  • Bug fix in Test-TargetResource when evaluating return code from robocopy
  • Updated example to use correct PsDscRunAsCredential parameter
  • Breaking Change: Changed AditionalArgs parameter to Array of String
  • Added additional examples with different copy options.
xSqlPs 1.3.0.0
  • MSFT_xSqlAlias: Fixed bugs when creating new registry keys
xSQLServer 1.6.0.0
  • Resources Added
    • xSQLAOGroupEnsure
    • xSQLAOGroupJoin
    • xWaitForAvailabilityGroup
    • xSQLServerEndPoint
    • xSQLServerAlwaysOnService
  • xSQLServerHelper
    • added functions
      • Connect-SQL
      • New-VerboseMessage
      • Grant-ServerPerms
      • Grant-CNOPerms
      • New-ListenerADObject
  • xSQLDatabaseRecoveryModel
    • Updated Verbose statements to use new function New-VerboseMessage
  • xSQLServerDatabase
    • Updated Verbose statements to use new function New-VerboseMessage
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerDatabaseOwner
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerDatabasePermissions
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerDatabaseRole
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerLogin
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerMaxDop
    • Updated Verbose statements to use new function New-VerboseMessage
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerMemory
    • Updated Verbose statements to use new function New-VerboseMessage
    • Removed ConnectSQL function and replaced with new Connect-SQL function
  • xSQLServerPowerPlan
    • Updated Verbose statements to use new function New-VerboseMessage
xStorage 2.6.0.0
  • MSFT_xDisk: Replaced Get-WmiObject with Get-CimInstance
xTimeZone 1.4.0.0
  • xTimeZone: Unit tests updated to use standard test template. Added Integration tests. Resource code updated to match style guidelines. Get-TargetResource returns IsSingleInstance value. Moved Get-Timezone and Set-Timezone to TimezoneHelper.psm1 Added unit tests for TimezoneHelper.psm1 Converted Get-Timezone to use CIM cmdlets. Added support for Set-Timezone to use .NET reflection if possible. Added message localization support. Changed Integration tests so that a complete test occurs if the System time is already set to ‘Pacific Standard Time’.
  • Copied SetTimeZone.ps1 example into Readme.md.
  • AppVeyor build machine set to WMF5.
xWebDeploy 1.2.0.0
  • xWebPackageDeploy: Fixed comparison to check if Destination contains any backslash
xWindowsUpdate 2.5.0.0
  • Added xWindowsUpdateAgent

Questions, comments?

If you’re looking into using PowerShell DSC, have questions or issues with a current resource, or would like a new resource, let us know in the comments below, on Twitter (@PowerShell_Team), or by creating an issue on GitHub.

Katie Keim
Software Engineer
PowerShell Team