DSC Resource Kit Release July 2018

We just released the DSC Resource Kit!

This release includes updates to 12 DSC resource modules. In the past 6 weeks, 128 pull requests have been merged and 90 issues have been closed, all thanks to our amazing community!

The modules updated in this release are:

  • ComputerManagementDsc
  • SecurityPolicyDsc
  • SharePointDsc
  • SqlServerDsc
  • xActiveDirectory
  • xDhcpServer
  • xDscResourceDesigner
  • xExchange
  • xPowerShellExecutionPolicy (now deprecated since now in ComputerManagementDsc)
  • xPSDesiredStateConfiguration
  • xRemoteDesktopSessionHost
  • xWebAdministration

For a detailed list of the resource modules and fixes in this release, see the Included in this Release section below.

Our last community call for the DSC Resource Kit was on July 18. A recording of our updates will be available on YouTube soon. Join us for the next call at 12PM (Pacific time) on August 29 to ask questions and give feedback about your experience with the DSC Resource Kit.

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)!

Please see our documentation here for information on the support of these resource modules.

Included in this Release

You can see a detailed summary of all changes included in this release in the table below. For past release notes, go to the README.md or CHANGELOG.md file on the GitHub repository page for a specific module (see the How to Find DSC Resource Modules on GitHub section below for details on finding the GitHub page for a specific module).

Module Name Version Release Notes
  • PowershellExecutionPolicy:
    • Updated to meet HQRM guidelines.
    • Migrated the xPowershellExecutionPolicy from xPowershellExecutionPolicy and renamed to PowershellExecutionPolicy.
    • Moved strings to localization file.
  • Changed the scope from Global to Script in MSFT_ScheduledTask.Integration.Tests.ps1
  • Changed the scope from Global to Script ComputerManagementDsc.Common.Tests.ps1
  • ScheduledTask:
    • Added support for event based triggers, implemented using the ScheduleType OnEvent fixes Issue 167
  • Added additional error handling to ConvertTo-Sid helper function.
  • SPCacheAccounts
    • Fixed issue where the Test method would fail if SetWebAppPolicy was set to false.
  • SPDistributedCacheService
    • Updated resource to allow updating the cache size
  • SPFarm
    • Implemented ability to deploy Central Administration site to a server at a later point in time
  • SPInfoPathFormsServiceConfig
    • Fixed issue with trying to set the MaxSizeOfUserFormState parameter
  • SPProductUpdate
    • Fixed an issue where the resource failed when the search was already paused
  • SPProjectServerLicense
    • Fixed issue with incorrect detection of the license
  • SPSearchContentSource
    • Fixed issue where the Get method returned a conversion error when the content source contained just one address
    • Fixed issue 840 where the parameter StartHour was never taken into account
  • SPSearchServiceApp
    • Fixed issue where the service account was not set correctly when the service application was first created
    • Fixed issue where the Get method throws an error when the service app wasn’t created properly
  • SPSearchTopology
    • Fixed issue where Get method threw an error when the specified service application didn’t exist yet.
  • SPServiceAppSecurity
    • Fixed issue where error was thrown when no permissions were set on the service application
  • SPShellAdmins
    • Updated documentation to specify required permissions for successfully using this resource
  • SPTrustedIdentityTokenIssuerProviderRealms
    • Fixed code styling issues
  • SPUserProfileServiceApp
    • Fixed code styling issues
  • Changes to SqlServerDsc
    • Updated helper function Restart-SqlService to have to new optional parameters SkipClusterCheck and SkipWaitForOnline. This was to support more aspects of the resource SqlServerNetwork.
    • Updated helper function Import-SQLPSModule
      • To only import module if the module does not exist in the session.
      • To always import the latest version of “SqlServer” or “SQLPS” module, if more than one version exist on the target node. It will still prefer to use “SqlServer” module.
    • Updated all the examples and integration tests to not use PSDscAllowPlainTextPassword, so examples using credentials or passwords by default are secure.
  • Changes to SqlAlwaysOnService
    • Integration tests was updated to handle new IPv6 addresses on the AppVeyor build worker (issue 1155).
  • Changes to SqlServerNetwork
    • Refactor SqlServerNetwork to not load assembly from GAC (issue 1151).
    • The resource now supports restarting the SQL Server service when both enabling and disabling the protocol.
    • Added integration tests for this resource (issue 751).
  • Changes to SqlAG
    • Removed excess Import-SQLPSModule call.
  • Changes to SqlSetup
    • Now after a successful install the “SQL PowerShell module” is reevaluated and forced to be reimported into the session. This is to support that a never version of SQL Server was installed side-by-side so that SQLPS module should be used instead.
  • Fixed Test-MockSchema to return True if class name matches resource name when there are multiple embeded classes in the schema mof. issue 123.
  • Fixed issue in xExchInstall where winrm config command fails to execute
  • Fixed issue in xExchInstall where a failed Exchange setup run is not reported, and subsequent DSC resources are allowed to run
  • Fixed issue in xExchAutoMountPoint where Test-TargetResource fails after mount points have been successfully configured.
  • Fixed issue in xExchAutoMountPoint where Set-TargetResource fails if EnsureExchangeVolumeMountPointIsLast parameter is specified.
  • Updated xExchAutoMountPoint, xExchJetstressCleanup, and related DiskPart functions to not use global variables.
  • Fixes broken tests in: MSFT_xExchDatabaseAvailabilityGroup.Integration.Tests.ps1, MSFT_xExchExchangeCertificate.Integration.Tests.ps1, MSFT_xExchOutlookAnywhere.Integration.Tests.ps1, MSFT_xExchPopSettings.Integration.Tests.ps1, xExchangeConfigHelper.Unit.Tests.ps1
  • Update most Test-TargetResource functions to output all invalid settings, instead of just the first detected invalid setting
  • Deprecated this module. This resource module will no longer be released. Please use the PowerShellExecutionPolicy resource in ComputerManagementDsc instead.
  • Changes to xPSDesiredStateConfiguration
    • Opt-in for the common tests validate module files and script files.
    • All files change to encoding UTF-8 (without byte order mark).
    • Opt-in for the common test for example validation.
    • Added Visual Studio Code workspace settings that helps with formatting against the style guideline.
    • Update all examples for them to be able pass the common test validation.
  • xEnvironment path documentation update demonstrating usage with multiple values (issue 415. Alex Kokkinos (@alexkokkinos)
  • Changes to xWindowsProcess
    • Increased the wait time in the integration tests since the tests still failed randomly (issue 420).
  • Renamed and updated examples to be able to publish them to PowerShell Gallery.
    • Sample_xScript.ps1 to xScript_WatchFileContentConfig.ps1
    • Sample_xService_UpdateStartupTypeIgnoreState.ps1 to xService_UpdateStartupTypeIgnoreStateConfig.ps1
    • Sample_xWindowsProcess_Start.ps1 to xWindowsProcess_StartProcessConfig.ps1
    • Sample_xWindowsProcess_StartUnderUser.ps1 to xWindowsProcess_StartProcessUnderUserConfig.ps1
    • Sample_xWindowsProcess_Stop.ps1 to xWindowsProcess_StopProcessConfig.ps1
    • Sample_xWindowsProcess_StopUnderUser.ps1 to xWindowsProcess_StopProcessUnderUserConfig.ps1
    • Sample_xUser_CreateUser.ps1.ps1 to xUser_CreateUserConfig.ps1
    • Sample_xUser_Generic.ps1.ps1 to xUser_CreateUserDetailedConfig.ps1
    • Sample_xWindowsFeature.ps1 to xWindowsFeature_AddFeatureConfig.ps1
    • Sample_xWindowsFeatureSet_Install.ps1 to xWindowsFeatureSet_AddFeaturesConfig.ps1
    • Sample_xWindowsFeatureSet_Uninstall.ps1 to xWindowsFeatureSet_RemoveFeaturesConfig.ps1
    • Sample_xRegistryResource_AddKey.ps1 to xRegistryResource_AddKeyConfig.ps1
    • Sample_xRegistryResource_RemoveKey.ps1 to xRegistryResource_RemoveKeyConfig.ps1
    • Sample_xRegistryResource_AddOrModifyValue.ps1 to xRegistryResource_AddOrModifyValueConfig.ps1
    • Sample_xRegistryResource_RemoveValue.ps1 to xRegistryResource_RemoveValueConfig.ps1
    • Sample_xService_CreateService.ps1 to xService_CreateServiceConfig.ps1
    • Sample_xService_DeleteService.ps1 to xService_RemoveServiceConfig.ps1
    • Sample_xServiceSet_StartServices.ps1 to xServiceSet_StartServicesConfig.ps1
    • Sample_xServiceSet_BuiltInAccount to xServiceSet_EnsureBuiltInAccountConfig.ps1
    • Sample_xWindowsPackageCab to xWindowsPackageCab_InstallPackageConfig
    • Sample_xWindowsOptionalFeature.ps1 to xWindowsOptionalFeature_EnableConfig.ps1
    • Sample_xWindowsOptionalFeatureSet_Enable.ps1 to xWindowsOptionalFeatureSet_EnableConfig.ps1
    • Sample_xWindowsOptionalFeatureSet_Disable.ps1 to xWindowsOptionalFeatureSet_DisableConfig.ps1
    • Sample_xRemoteFileUsingProxy.ps1 to xRemoteFile_DownloadFileUsingProxyConfig.ps1
    • Sample_xRemoteFile.ps1 to xRemoteFile_DownloadFileConfig.ps1
    • Sample_xProcessSet_Start.ps1 to xProcessSet_StartProcessConfig.ps1
    • Sample_xProcessSet_Stop.ps1 to xProcessSet_StopProcessConfig.ps1
    • Sample_xMsiPackage_UninstallPackageFromHttps.ps1 to xMsiPackage_UninstallPackageFromHttpsConfig.ps1
    • Sample_xMsiPackage_UninstallPackageFromFile.ps1 to xMsiPackage_UninstallPackageFromFileConfig.ps1
    • Sample_xMsiPackage_InstallPackageFromFile to xMsiPackage_InstallPackageConfig.ps1
    • Sample_xGroup_SetMembers.ps1 to xGroup_SetMembersConfig.ps1
    • Sample_xGroup_RemoveMembers.ps1 to xGroup_RemoveMembersConfig.ps1
    • Sample_xGroupSet_AddMembers.ps1 to xGroupSet_AddMembersConfig.ps1
    • Sample_xFileUpload.ps1 to xFileUpload_UploadToSMBShareConfig.ps1
    • Sample_xEnvironment_CreateMultiplePathVariables.ps1 to xEnvironment_AddMultiplePathsConfig.ps1
    • Sample_xEnvironment_RemovePathVariables.ps1 to xEnvironment_RemoveMultiplePathsConfig.ps1
    • Sample_xEnvironment_CreateNonPathVariable.ps1 to xEnvironment_CreateNonPathVariableConfig.ps1
    • Sample_xEnvironment_Remove.ps1 to xEnvironment_RemoveVariableConfig.ps1
    • Sample_xArchive_ExpandArchiveChecksumAndForce.ps1 to xArchive_ExpandArchiveChecksumAndForceConfig.ps1
    • Sample_xArchive_ExpandArchiveDefaultValidationAndForce.ps1 to xArchive_ExpandArchiveDefaultValidationAndForceConfig.ps1
    • Sample_xArchive_ExpandArchiveNoValidation.ps1 to xArchive_ExpandArchiveNoValidationConfig.ps1
    • Sample_xArchive_ExpandArchiveNoValidationCredential.ps1 to xArchive_ExpandArchiveNoValidationCredentialConfig.ps1
    • Sample_xArchive_RemoveArchiveChecksum.ps1 to xArchive_RemoveArchiveChecksumConfig.ps1
    • Sample_xArchive_RemoveArchiveNoValidation.ps1 to xArchive_RemoveArchiveNoValidationConfig.ps1
    • Sample_InstallExeCreds_xPackage.ps1 to xPackage_InstallExeUsingCredentialsConfig.ps1
    • Sample_InstallExeCredsRegistry_xPackage.ps1 to xPackage_InstallExeUsingCredentialsAndRegistryConfig.ps1
    • Sample_InstallMSI_xPackage.ps1 to xPackage_InstallMsiConfig.ps1
    • Sample_InstallMSIProductId_xPackage.ps1 to xPackage_InstallMsiUsingProductIdConfig.ps1
  • New examples
    • xUser_RemoveUserConfig.ps1
    • xWindowsFeature_AddFeatureUsingCredentialConfig.ps1
    • xWindowsFeature_AddFeatureWithLogPathConfig.ps1
    • xWindowsFeature_RemoveFeatureConfig.ps1
    • xService_ChangeServiceStateConfig.ps1
    • xWindowsOptionalFeature_DisableConfig.ps1
    • xPSEndpoint_NewConfig.ps1
    • xPSEndpoint_NewWithDefaultsConfig.ps1
    • xPSEndpoint_RemoveConfig.ps1
    • xPSEndpoint_NewCustomConfig.ps1
  • Removed examples
    • Sample_xPSSessionConfiguration.ps1 – This file was split up in several examples, those starting with “xPSEndpoint*”.
    • Sample_xMsiPackage_InstallPackageFromHttp – This was added to the example xMsiPackage_InstallPackageConfig.ps1 so the example sows either URI scheme.
    • Sample_xEnvironment_CreatePathVariable.ps1 – Same as the new example xEnvironment_AddMultiplePaths.ps1
  • Added additional resources, copied from the Azure RDS quickstart templates.
  • xRDSessionCollection:
    • Fixed call to Add-RDSessionHost in Set-TargetResource by properly removing CollectionDescription from PSBoundParameters (issue 28)
    • Fixed bug on Get-TargetResource that did return any collection instead of the one collection the user asked for (issue 27)
    • Added unit tests to test Get, Test and Set results in this resource
  • Added new resources xWebConfigProperty and xWebConfigPropertyCollection extending functionality provided by xWebConfigKeyValue, addresses 249.
  • Fixed Get-DscConfiguration throw in xWebSite; addresses 372. Reggie Gibson (@regedit32)
  • Added WebApplicationHandler resource for creating and modifying IIS Web Handlers. Fixes 337
  • Added WebApplicationHandler integration tests
  • Added WebApplicationHandler unit tests
  • Deprecated xIISHandler resource. This resource will be removed in future release

How to Find Released DSC Resource 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.

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

# To list all modules that tagged as DSCResourceKit
Find-Module -Tag DSCResourceKit 
# To list all DSC resources from all sources 

Please note only those modules released by the PowerShell Team are currently considered part of the ‘DSC Resource Kit’ regardless of the presence of the ‘DSC Resource Kit’ tag in the PowerShell Gallery.

To find a specific module, go directly to its URL on the PowerShell Gallery:
http://www.powershellgallery.com/packages/< module name >
For example:

How to Install DSC Resource Modules 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

To update all previously installed modules at once, open an elevated PowerShell prompt and use this command:


After installing modules, you can discover all DSC resources available to your local system with this command:


How to Find DSC Resource Modules on GitHub

All resource modules in the DSC Resource Kit are available open-source on GitHub.
You can see the most recent state of a resource module by visiting its GitHub page at:
https://github.com/PowerShell/< module name >
For example, for the CertificateDsc module, go to:

All DSC modules are also listed as submodules of the DscResources repository in the DscResources folder and the xDscResources folder.

How to Contribute

You are more than welcome to contribute to the development of the DSC Resource Kit! 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.
See our contributing guide for more info on how to become a DSC Resource Kit contributor.

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 for specific resource modules by going to:
https://github.com/PowerShell/< module name >/issues
For example:

Your help in developing the DSC Resource Kit is invaluable to us!

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 DSC Team
@katiedsc (Twitter)
@kwirkykat (GitHub)