DSC Resource Kit Release May 2017

We just released the DSC Resource Kit! This release includes updates to 10 DSC resource modules including 3 new resources. In these past 6 weeks, 60 pull requests have been merged and 58 issues have been closed, all thanks to our amazing community!

The modules updated in this release are:

  • SharePointDsc
  • SecurityPolicyDsc
  • xCertificate
  • xComputerManagement
  • xCredSSP
  • xExchange
  • xHyper-V
  • xNetworking
  • xSqlServer
  • xStorage

UPDATE – xDFS has now also been released. Release notes can be found on the PowerShell Gallery here.
xStorage, xNetworking, and xCertificate have also just been released again to fix a conflict when using the modules together.

PSDscResources is also in the pipeline for release, but it is currently failing tests in AppVeyor.
It will be released when tests are passing.

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 last week on May 24. A recording of our updates as well as summarizing notes are available. Join us next time to ask questions and give feedback about your experience with the DSC Resource Kit. Keep an eye on the community agenda for the link to the next call.

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

All resources with the ‘x’ prefix in their names are still experimental – this means that those resources are provided AS IS and are not supported through any Microsoft support program or service. If you find a problem with a resource, please file an issue on GitHub.

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
SharePointDsc 1.7.0.0
  • Update SPSearchIndexPartition made ServiceAppName as a Key
  • New resouce: SPTrustedRootAuthority
  • Update SPFarmSolution to eject from loop after 30m.
  • New resource: SPMachineTranslationServiceApp
  • New resource: SPPowerPointAutomationServiceApp
  • Bugfix in SPSearchFileType made ServiceAppName a key property.
  • New resource: SPWebApplicationExtension
  • Added new resource SPAccessServices2010
  • Added MSFT_SPSearchCrawlMapping Resource to manage Crawl Mappings for Search Service Application
  • Added new resource SPSearchAuthoritativePage
  • Bugfix in SPWebAppThrottlingSettings for setting large list window time.
  • Fix typo in method Get-TargetResource of SPFeature
  • Fix bug in SPManagedAccount not returning the correct account name value
  • Fix typo in method Get-TargetResource of SPSearchIndexPartition
  • Update documentation of SPInstallLanguagePack to add guidance on package change in SP2016
  • Added returning the required RunCentralAdmin parameter to Get-TargetResource in SPFarm
  • Added web role check for SPBlobCacheSettings
  • Improved error message when rule could not be found in SPHealthAnalyzerRuleState
  • Extended the documentation to specify that the default value of Ensure is Present
  • Added documentation about the user of Host Header Site Collections and the HostHeader parameter in SPWebApplication
  • Fixed missing brackets in SPWebAppPolicy module file
  • Fixed issue with SPSecureStoreServiceApp not returning database information
  • Fixed issue with SPManagedMetadataServiceApp not returning ContentTypeHubUrl in SP2016
  • Updated SPTrustedIdentityTokenIssuer to allow to specify the signing certificate from file path as an alternative to the certificate store
  • New resource: SPSearchCrawlerImpactRule
  • Fixed issue in SPSite where the used template wasn’t returned properly
  • Fixed issue in SPWebApplicationGeneralSettings which didn’t return the security validation timeout properly
  • Fixed bug in SPCreateFarm and SPJoinFarm when a SharePoint Server is already joined to a farm
  • Bugfix in SPContentDatabase for setting WarningSiteCount as 0.
  • Fixing verbose message that identifies SP2016 as 2013 in MSFT_SPFarm
  • Fixed SPProductUpdate looking for OSearch15 in SP2016 when stopping services
  • Added TermStoreAdministrators property to SPManagedMetadataServiceApp
  • Fixed an issue in SPSearchTopology that would leave a corrupt topology in place if a server was removed and re-added to a farm
  • Fixed bug in SPFarm that caused issues with database names that have dashes in the names
SecurityPolicyDsc 1.4.0.0
  • Added functionality to support BaselineManagement Module.
  • Updated UserRightsAssignment resource to respect dynamic local accounts.
  • Added SecuritySetting resource to process additional INF settings.
xCertificate 2.6.0.0
  • Added mandatory properties for xPfxImport resource example.
  • xCertReq:
    • Fixed issue where xCertReq does not identify when DNS Names in SANs are incorrect.
    • Added Certificate Authority auto-discovery to resource xCertReq.
    • Added SAN and certificate template name to xCertReq”s Get-TargetResource
    • Added new parameter UseMachineContext to be able to use CA templates that try to fill the subject alternative name
  • CertificateDSc.Common:
    • Added function Get-CertificateTemplateName to retrieve template name
    • Added function Get-CertificateSan to retrieve subject alternative name
    • Added function Find-CertificateAuthority to enable auto-discovery
xComputerManagement 1.10.0.0
  • Added resources
    • xVirtualMemory
xCredSSP 1.3.0.0
  • Added a fix to enable credSSP with a fresh server installation
xExchange 1.15.0.0
  • xExchDatabaseAvailabilityGroupMember: Added check to ensure Failover-Clustering role is installed before adding server to DAG.
  • xExchInstall: Remove parameter “-AllowImmediateReboot $AllowImmediateReboot” when calling CheckWSManConfig.
  • xExchOutlookAnywhere: Add test for ExternalClientAuthenticationMethod.
  • Test: Update OAB and UMService tests to create test OAB and UMDialPlans, respectively.
xHyper-V 3.8.0.0
  • Fix bug in xVMDvdDrive with hardcoded VM Name.
  • Corrected Markdown rule violations in Readme.md.
xNetworking 4.0.0.0
  • Converted to use AppVeyor.psm1 in DSCResource.Tests repository.
  • Converted to use Example and Markdown tests in DSCResource.Tests repository.
  • Added CodeCov.io support.
  • Added a new example to xDNSServerAddress to clarify setting multiple DNS Servers.
  • Fix examples to correct display in auto documentation generation.
  • BREAKING CHANGE: Migrated xNetworkAdapter module functionality to xNetAdapterName resource.
  • Added CommonTestHelper module for aiding testing.
  • MSFT_xNetAdapterName:
    • Created new resource for renaming network adapters.
    • Added Find-NetAdapter cmdlet to NetworkingDsc.Common.
  • Correct example parameters format to meet style guidelines.
xSqlServer 7.1.0.0
  • Changes to xSQLServerMemory
    • Changed the way SQLServer parameter is passed from Test-TargetResource to Get-TargetResource so that the default value isn”t lost (issue 576).
    • Added condition to unit tests for when no SQLServer parameter is set.
  • Changes to xSQLServerMaxDop
    • Changed the way SQLServer parameter is passed from Test-TargetResource to Get-TargetResource so that the default value isn”t lost (issue 576).
    • Added condition to unit tests for when no SQLServer parameter is set.
  • Changes to xWaitForAvailabilityGroup
    • Updated README.md with a description for the resources and revised the parameter descriptions.
    • The default value for RetryIntervalSec is now 20 seconds and the default value for RetryCount is now 30 times (issue 505).
    • Cleaned up code and fixed PSSA rules warnings (issue 268).
    • Added unit tests (issue 297).
    • Added descriptive text to README.md that the account that runs the resource must have permission to run the cmdlet Get-ClusterGroup (issue 307).
    • Added read-only parameter GroupExist which will return $true if the cluster role/group exist, otherwise it returns $false (issue 510).
    • Added examples.
  • Changes to xSQLServerPermission
    • Cleaned up code, removed SupportsShouldProcess and fixed PSSA rules warnings (issue 241 and issue 262).
    • It is now possible to add permissions to two or more logins on the same instance (issue 526).
    • The parameter NodeName is no longer mandatory and has now the default value of $env:COMPUTERNAME.
    • The parameter Ensure now has a default value of “Present”.
    • Updated README.md with a description for the resources and revised the parameter descriptions.
    • Removed dependency of SQLPS provider (issue 482).
    • Added ConnectSql permission. Now that permission can also be granted or revoked.
    • Updated note in resource description to also mention ConnectSql permission.
  • Changes to xSQLServerHelper module
    • Removed helper function Get-SQLPSInstance and Get-SQLPSInstanceName because there is no resource using it any longer.
    • Added four new helper functions.
      • Register-SqlSmo, Register-SqlWmiManagement and Unregister-SqlAssemblies to handle the creation on the application domain and loading and unloading of the SMO and SqlWmiManagement assemblies.
      • Get-SqlInstanceMajorVersion to get the major SQL version for a specific instance.
    • Fixed typos in comment-based help
  • Changes to xSQLServer
    • Fixed typos in markdown files; CHANGELOG, CONTRIBUTING, README and ISSUE_TEMPLATE.
    • Fixed typos in schema.mof files (and README.md).
    • Updated some parameter description in schema.mof files on those that was found was not equal to README.md.
  • Changes to xSQLServerAlwaysOnService
    • Get-TargetResource should no longer fail silently with error “Index operation failed; the array index evaluated to null.” (issue 519). Now if the Server.IsHadrEnabled property return neither $true or $false the Get-TargetResource function will throw an error.
  • Changes to xSQLServerSetUp
    • Updated xSQLServerSetup Module Get-Resource method to fix (issue 516 and 490).
    • Added change to detect DQ, DQC, BOL, SDK features. Now the function Test-TargetResource returns true after calling set for DQ, DQC, BOL, SDK features (issue 516 and 490).
  • Changes to xSQLServerAlwaysOnAvailabilityGroup
    • Updated to return the exception raised when an error is thrown.
  • Changes to xSQLServerAlwaysOnAvailabilityGroupReplica
    • Updated to return the exception raised when an error is thrown.
    • Updated parameter description for parameter Name, so that it says it must be in the format SQLServer\InstanceName for named instance (issue 548).
  • Changes to xSQLServerLogin
    • Added an optional boolean parameter Disabled. It can be used to enable/disable existing logins or create disabled logins (new logins are created as enabled by default).
  • Changes to xSQLServerDatabaseRole
    • Updated variable passed to Microsoft.SqlServer.Management.Smo.User constructor to fix issue 530
  • Changes to xSQLServerNetwork
    • Added optional parameter SQLServer with default value of $env:COMPUTERNAME (issue 528).
    • Added optional parameter RestartTimeout with default value of 120 seconds.
    • Now the resource supports restarting a sql server in a cluster (issue 527 and issue 455).
    • Now the resource allows to set the parameter TcpDynamicPorts to a blank value (partly fixes issue 534). Setting a blank value for parameter TcpDynamicPorts together with a value for parameter TcpPort means that static port will be used.
    • Now the resource will not call Alter() in the Set-TargetResource when there is no change necessary (issue 537).
    • Updated example 1-EnableTcpIpOnCustomStaticPort.
    • Added unit tests (issue 294).
    • Refactored some of the code, cleaned up the rest and fixed PSSA rules warnings (issue 261).
    • If parameter TcpDynamicPort is set to “0” at the same time as TcpPort is set the resource will now throw an error (issue 535).
    • Added examples (issue 536).
    • When TcpDynamicPorts is set to “0” the Test-TargetResource function will no longer fail each time (issue 564).
  • Changes to xSQLServerRSConfig
    • Replaced sqlcmd.exe usages with Invoke-Sqlcmd calls (issue 567).
  • Changes to xSQLServerDatabasePermission
    • Fixed code style, updated README.md and removed *-SqlDatabasePermission functions from xSQLServerHelper.psm1.
    • Added the option “GrantWithGrant” with gives the user grant rights, together with the ability to grant others the same right.
    • Now the resource can revoke permission correctly (issue 454). When revoking “GrantWithGrant”, both the grantee and all the other users the grantee has granted the same permission to, will also get their permission revoked.
    • Updated tests to cover Revoke().
  • Changes to xSQLServerHelper
    • The missing helper function (“Test-SPDSCObjectHasProperty”), that was referenced in the helper function Test-SQLDscParameterState, is now incorporated into Test-SQLDscParameterState (issue 589).
xStorage 3.0.0.0
  • Converted AppVeyor build process to use AppVeyor.psm1.
  • Added support for auto generating wiki, help files, markdown linting and checking examples.
  • Correct name of MSFT_xDiskAccessPath.tests.ps1.
  • Move shared modules into Modules folder.
  • Fixed unit tests.
  • Removed support for WMI cmdlets.
  • Opted in to Markdown and Example tests.
  • Added CodeCov.io support.
  • Removed requirement on using Pester 3.4.6 because Pester bug fixed in 4.0.3.
  • Fixed unit tests for MSFT_xDiskAccessPath resource to be compatible with Pester 4.0.3.
  • xDisk:
    • BREAKING CHANGE: Renamed parameter DiskNumber to DiskId to enable it to
    • Added DiskIdType parameter to enable specifying the type of identifer
    • Changed to use xDiskAccessPath pattern to fix issue with Windows Server
    • Fixed style violations in xDisk.
    • Fixed issue when creating multiple partitions on a single disk with no size
  • xDiskAccessPath:
    • BREAKING CHANGE: Renamed parameter DiskNumber to DiskId to
    • Added DiskIdType parameter to enable specifying the type
    • Fixed incorrect logging messages when changing volume label.
    • Fixed issue when creating multiple partitions on a single disk with no size
  • xWaitForDisk:
    • BREAKING CHANGE: Renamed parameter DiskNumber to DiskId
    • Added DiskIdType parameter to enable specifying the type

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

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

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!

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