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 ComputerManagementDsc 5.2.0.0 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

SecurityPolicyDsc 2.4.0.0 Added additional error handling to ConvertTo-Sid helper function. SharePointDsc 2.4.0.0 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

SqlServerDsc 11.4.0.0 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.

xActiveDirectory 2.20.0.0 Changes to xActiveDirectory Changed MSFT_xADUser.schema.mof version to “1.0.0.0” to match other resources (issue 190). thequietman44 (@thequietman44) Removed duplicated code from examples in README.md (issue 198). thequietman44 (@thequietman44) xADDomain is now capable of setting the forest and domain functional level (issue 187). Jan-Hendrik Peters (@nyanhp)

xDhcpServer 2.0.0.0 BREAKING CHANGE: Switch to ScopeId as a key property for xDhcpServerScope (issue 43. Bartek Bielawski (@bielawb) xDscResourceDesigner 1.12.0.0 Fixed Test-MockSchema to return True if class name matches resource name when there are multiple embeded classes in the schema mof. issue 123. xExchange 1.22.0.0 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 xPowerShellExecutionPolicy 3.1.0.0 Deprecated this module. This resource module will no longer be released. Please use the PowerShellExecutionPolicy resource in ComputerManagementDsc instead. xPSDesiredStateConfiguration 8.4.0.0 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

xRemoteDesktopSessionHost 1.7.0.0 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

xWebAdministration 2.1.0.0 Added new resources xWebConfigProperty and xWebConfigPropertyCollection extending functionality provided by xWebConfigKeyValue , addresses 249.

and extending functionality provided by , 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

resource for creating and modifying IIS Web Handlers. Fixes 337 Added WebApplicationHandler integration tests

integration tests Added WebApplicationHandler unit tests

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 Find-DscResource

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: http://www.powershellgallery.com/packages/xWebAdministration

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:

Update-Module

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

Get-DscResource

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: https://github.com/PowerShell/CertificateDsc.

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: https://github.com/PowerShell/xPSDesiredStateConfiguration/issues

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

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)