| title | Desired State Configuration changelog |
|---|---|
| description | A log of the changes for releases of DSC. |
| ms.topic | whats-new |
| ms.date | 03/25/2025 |
All notable changes to DSC after the 3.0.0 release are documented in this file. The format is
based on Keep a Changelog, and DSC adheres to Semantic Versioning.
To see the changes for the earlier development of DSC before version 3.0.0, see the
DSC prerelease changelog on GitHub.
This section includes a summary of user-facing changes since the last release. For the full list of changes since the last release, see the diff on GitHub.
- Added what-if support to the MCP server tools. The
invoke_dsc_configtool now accepts awhat_ifoption for thesetoperation, and theinvoke_dsc_resourcetool acceptswhat_iffor thesetanddeleteoperations. This mirrors the--what-ifflag on thedsc config set,dsc resource set, anddsc resource deletecommands, enabling AI agents to preview changes before applying them. Passingwhat_ifwith an operation that doesn't support it returns an invalid parameters error.
v3.2.2 - 2026-06-16
This section includes a summary of changes for the 3.2.2 release. For the full list of changes
in this release, see the diff on GitHub.
-
Fixed several bugs with the
Microsoft.DSC.Transitional/PowerShellScriptandMicrosoft.DSC.Transitional/WindowsPowerShellScriptresources:- Scripts can now raise non-terminating errors and continue processing. In previous releases the
resources considered a script that raised any errors - even if the author specifically
handled them or set the error action preference to
Ignore- caused the resource to mark the script as failing. This prevented scripts for these resources from doing any error handling because any error stopped further execution. - The resources now emit all trace messages from the script when it fails before writing the final error message and exiting. In previous releases a race condition prevented some messages from emitting before the resource exited.
- Scripts can now raise non-terminating errors and continue processing. In previous releases the
resources considered a script that raised any errors - even if the author specifically
handled them or set the error action preference to
v3.2.1 - 2026-06-16
This section includes a summary of changes for the 3.2.1 release. For the full list of changes
in this release, see the diff on GitHub.
-
Resolved a design issue that caused failures when passing a resource path to an adapter with the resource path argument when the path includes any spaces. Starting with this release the resource path argument now includes an optional
includeQuotesfield to wrap the path in quotes before constructing the command invocation for the resource.This new option is set for the
Microsoft.Adapter/PowerShellandMicrosoft.Adapter/WindowsPowerShelladapters to enable them to correctly invoke PSDSC resources installed in a path that contains spaces.
v3.2.0 - 2026-06-08
This section includes a summary of changes for the 3.2.0 minor release. For the full list of
changes in this release, see the diff on GitHub.
-
Added the
dsc mcpcommand to start DSC in server mode. In this mode, DSC acts as a JSON RPC server. For this release, the server primarily enables use as a Model Context Protocol (MCP) provider. The server supports the following functions (tools in MCP):list_resourceslist_adapted_resourcesshow_dsc_resourcelist_dsc_resourceinvoke_dsc_resourceinvoke_dsc_config
-
Added the
dsc function listcommand to enumerate the available DSC configuration functions.Related work items
- Issues: None
- PRs: #959
-
Added the
--what-ifCLI option to thedsc resource setanddsc resource deletecommands to enable checking how a resource invocation will modify system state outside of operating on a configuration document.Related work items
- Issues: None.
- PRs:
-
Added the
--output-formatCLI option to thedsc resource deletecommand, enabling you to control the output format for that command now that it supports invoking the Delete operation in what-if mode, which returns output. When you invoke the command without the--what-ifoption DSC returns no data to stdout. -
Added the
--noopand--dry-runaliases for the--what-ifCLI option in thedsc config set,dsc resource set, anddsc resource deletecommands. -
Added support for using both the
--parameters-fileand--parametersCLI options for the samedsc configsubcommands, enabling you to use a parameters file and override the values in that file with the--parametersoption. Prior to this release you could use either--parametersor--parameters-filebut not both with the same command execution. -
Added the
--versionCLI option to thedsc resource *commands. Starting with this release, you can provide a version requirement to indicate to DSC which version of the resource to invoke.If DSC doesn't discover the resource with a version that is valid for the requirement defined by the
--versionoption DSC raises an error. -
Improved parsing and validation for CLI arguments and parameters that specify the fully qualified type name for a resource. Prior to this release, specifying an invalidly-constructed type name only raised an error when DSC failed to discover the given resource.
Starting with this release, DSC validates the type name and provides detailed validation errors when the type name is incorrectly structured.
Related work items
- Issues: None.
- PRs:
-
Added the
executionInformationfield to replace the use of theMicrosoft.DSCnamespace in themetadatafield for DSC command output. In this release, the execution information is duplicated in bothexecutionInformationandmetadata.Microsoft.DSCto maintain backwards compatibility for tools and scripts that process DSC output. In DSC version4.0.0, the results will no longer include themetadata.Microsoft.DSCfield. -
Added the
y2jtool to the DSC package. This tool bidirectionally converts JSON to YAML and YAML to JSON. It's included in the package for convenience and testing scenarios. -
Added support for defining extensions that can retrieve secrets and the
secret()configuration function for retrieving secrets from an extension. -
Added support for defining extensions that can retrieve configuration documents defined in any format and use them with DSC. These extensions can convert a file that defines a configuration in a way DSC can't parse into a configuration document, enabling you to use different data formats or domain specific languages (DSLs).
-
Added the experimental
Microsoft.PowerShell/Discoverextension to find DSC manifests packaged with PowerShell modules. This enables PowerShell developers to define and publish DSC extensions and resources with their PowerShell modules. The extension also discovers adapted resource manifests and manifest lists. -
Added support for synthetic Export operations for resources that don't have the
exportcapability. For these resources, DSC instead invokes the Get operation on the resource, using the definedpropertiesfor the instance. The actual state of the resource is then inserted into the export configuration document. -
Added the top-level
functionfield to configuration documents, enabling you to define custom functions you can use in the rest of the configuration document. -
Added the top-level
outputsfield to configuration documents, enabling you to retrieve custom representations of the data emitted by resources in the document for final output. -
Added the top-level
directivesfield to configuration documents, enabling you to control how DSC processes the document. DSC supports the following directives:-
resourceDiscovery- Choose whether DSC raises an error for an undiscovered resource during initial validation of a configuration document.By default and when you set this directive to
preDeployment, DSC performs discovery for resources and extensions and then validates whether every resource used in the configuration document exists and is available. If any resource is used in the document but not discovered, DSC raises an error without invoking any of the resources.Set this directive to
duringDeploymentto defer raising an error for a missing resource when the configuration document itself installs a resource that the configuration depends on. When you do, DSC performs discovery again when processing a resource that wasn't initially discovered and only raises an error if the resource isn't available at that time. -
securityContext- Choose whether DSC validates that the configuration is being processed in a specific security context prior to invoking any resources in the configuration document. This replaces the usage of thesecurityContextfield in theMicrosoft.DSCnamespace of the document'smetadatafield. Using metadata to define this directive now raises a warning that indicates the field is deprecated.If you define both
directives.securityContextandmetadata.Microsoft.DSC.securityContext, DSC uses the value from the directive. -
version- Choose whether DSC validates that the configuration is being processed by a compatible version of DSC itself. When you don't define this directive, DSC processes the configuration document as normal. When you define this directive as a semantic version requirement, DSC raises an error if the version of DSC processing the document isn't valid for that requirement.This enables you to require specific versions of DSC in production and raise an error for incompatible configuration documents and DSC versions without invoking any resources in the document.
-
-
Added new fields to resource instances in a configuration document:
-
conditionenables you to only invoke the instance when the value for this field evaluates totrue. -
copyenables you to define one resource instance that expands into multiple instances with shared property values.[!NOTE] This field was added during the preview releases for DSC 3.2.0. Some early adopters began using the
copyfield. To avoid breaking those users the functionality remains in the DSC engine but is deprecated. If you use thecopyfield DSC raises a warning to indicate that you should not rely on this functionality as it will be removed in DSC version4.0.0. -
requireVersionenables you to pin a resource instance to a specific version or a range of versions. This field is aliased toapiVersionfor compatibility purposes.
-
-
Added new configuration functions:
and()- evaluates totrueif all parameters evaluate totruebool()- converts a string or numerical value totrueorfalsetrue()- returns the boolean valuetruefalse()- returns the boolean valuefalsenot()- returns the opposite of the input boolean valueor()- evaluates totrueif any parameter evaluates totrueless()- evaluates totrueif the first parameter is less than the second parameter. Supports comparing numbers and strings.lessOrEquals()- evaluates totrueif the first parameter is less than or equal to the second parameter. Supports comparing numbers and strings.greater()- evaluates totrueif the first parameter is greater than the second parameter. Supports comparing numbers and strings.greaterOrEquals()- evaluates totrueif the first parameter is greater than or equal to the second parameter. Supports comparing numbers and strings.coalesce()createObject()null()contains()union()length()empty()secret()endsWith()startsWith()utcNow()uniqueString()string()array()first()indexOf()lastIndexOf()skip()join()context()intersection()range()substring()base64ToString()toLower()toUpper()trim()items()tryGet()uriComponent()uriComponentToString()json()uri()last()copyIndex()tryIndexFromEnd()take()parseCidr()cidrHost()cidrSubnet()objectKeys()tryWhich()shallowMerge()dataUri()dataUriToString()lambda()lambdaVariables()map()filter()
-
Added support for using configuration functions in the
namefield for resource instances in a configuration document. Prior to this release, specifying a configuration function for this field raised an error. -
Added in-memory caching for discovered resources, including adapted resources, and extensions. This improves performance when DSC needs to run discovery more than once, such as when using implicitly adapted resource instances.
Related work items
- Issues:
- None.
- PRs:
- Issues:
-
Added the
metadatafield to resource and extension manifests, enabling authors to define any additional data they want to include with their resources and extensions.Related work items
- Issues:
- None.
- PRs:
- Issues:
-
Added the
conditionfield to resource and extension manifests, enabling authors to define use DSC configuration expressions to define a check for whether the resource is usable on a system. This field affects whether DSC discards the resource or extension during discovery:- If the manifest doesn't define
conditionor definesconditionwith an expression that evaluates totrue, DSC discovers the resource or extension as normal. - If the manifest defines
conditionand the expression evaluates tofalse, DSC discards the resource or extension during discovery and writes a debug message notifying the user that the manifest's condition wasn't met.
This is particularly useful for not displaying or attempting to use resources and extensions that have external prerequisites, like the PowerShell adapters depending on
pwshbeing available on the system.Starting with this release, built-in DSC resources use this field to prevent confusion and errors for users where a resource or extension isn't functional because of missing external dependencies.
Related work items
- Issues:
- None.
- PRs:
- If the manifest doesn't define
-
Added the
directivesfield to resource instances in a configuration document to provide per-instance overrides for how DSC should process the resource. In this release, you can define the following directives for a resource instance:requireAdapter- indicates that DSC should use the defined fully qualified type name for the adapted resource instance. When this directive isn't specified, DSC uses the first discovered adapter that can invoke the adapted resource instance. This directive has no effect on nonadapted resource instances.securityContext- indicates that DSC should validate the current security context against this directive before invoking the resource. This value overrides thedirectives.securityContextfor the top level of the configuration document. This enables you to selectively require or forbid elevated security contexts for a specific resource instance.
-
Added a new "what-if" argument type for the
set.argsanddelete.argsfields in resource manifests, enabling authors to define an argument to pass to the resource command to indicate it should operate in what-if mode. -
Added support for resources returning the
metadata._refreshEnvfield in the output for Set operations on Windows systems to indicate that DSC should update the environment variables before invoking the next resource. This enables resources that install software or modify environment variables that other resource instances depend on to advertise that environment variables need to be refreshed. This is a common requirement when a configuration document both installs and invokes software in the same document. -
Added support for deprecating resources and extensions by defining the
deprecationMessagefield in resource and extension manifests. When a manifest defines this field, DSC raises a warning to users for that extension or resource indicating that it's deprecated and surfacing the message to the user. -
Added the
set.whatIfReturnsfield to resource manifest enabling a resource to return differently shaped data for Set operations depending on whether the user invokes the command in what-if mode. Prior to this release the resource needed to return the same data structure for actual Set operations and those operations in what-if mode. The field has the same possible values asset.returns.Related work items
- Issues: None.
- PRs:
-
Added support for defining and discovering adapted resource manifests. Providing an adapted resource manifest:
- Improves the performance for discovering adapted resources because it doesn't rely on the adapter to find, parse, and surface resources to DSC.
- Improves the validation for adapted resources because it enables the adapted resource author to provide a JSON Schema for adapted resource instances instead of delegating validation of the instance to the adapter, which must dynamically validate the instance.
In this release the new
Microsoft.Adapter/PowerShelladapter uses adapted resource manifests for discovery. TheMicrosoft.Adapter/WindowsPowerShelladapter still has to dynamically discover PSDSC resources because it depends on the PSDSC v1.1 engine. -
Added support for defining multiple resource and extension manifests in files that use the naming convention
.dsc.manifests.<json|yaml>. The files are manifest lists. Manifest lists simplify distribution for resources and extensions where you can keep the manifests in a single file instead of defining one file for every extension, resource, and adapted resource manifest. -
Added new resources for configuring SSHD:
Microsoft.OpenSSH.SSHD/sshd_config- Manages the configuration file for an SSH server.Microsoft.OpenSSH.SSHD/Subsystem- Manages an entry for theSubsystemkeyword in the configuration file for an SSH server.Microsoft.OpenSSH.SSHD/SubsystemList- Manages multiple entries for theSubsystemkeyword in the configuration file for an SSH server.Microsoft.OpenSSH.SSHD/Windows- Manages global settings, such as the default shell, for an SSH server on Windows.
-
Added new resources for migrating from imperative configuration scripts to idempotent DSC configuration documents:
Microsoft.DSC.Transitional/PowerShellScript- Define PowerShell script blocks to invoke for Get, Set, and Test operations.Microsoft.DSC.Transitional/WindowsPowerShellScript- Define Windows PowerShell script blocks to invoke for Get, Set, and Test operations.
-
Added new adapters for PowerShell and Windows PowerShell, replacing the existing adapters which are now marked as deprecated:
Microsoft.Adapter/PowerShellreplacesMicrosoft.DSC/PowerShell.Microsoft.Adapter/WindowsPowerShellreplacesMicrosoft.Windows/WindowsPowerShell.
All improvements and new functionality will be implemented for the
Microsoft.Adapter/*types. You should begin migrating usage to the new adapters. In DSC version4.0.0, the deprecated adapters will be removed.You can explicitly select which adapter to use for a resource instance in a configuration document with the
requireAdapterdirective. By default, DSC will use the new adapters when the instance doesn't specify a directive.Related work items
- Issues: None.
- PRs:
-
Added new built-in DSC resources for managing Windows systems:
Microsoft.Windows/UpdateListMicrosoft.Windows/OptionalFeatureListMicrosoft.Windows/ServiceMicrosoft.Windows/FeatureOnDemandListMicrosoft.Windows/FirewallRuleList
-
Added support for the Set operation to the
Microsoft.Windows/WMIadapter. -
Added support for filtered Export operations to the
Microsoft.DSC/PowerShelladapter. Starting with this release, class-based PSDSC resources can implement a filtered export operation to return a subset of instances that exist on the system. -
Added the canonical properties
_nameand_securityContext. These canonical properties are only emitted by resources during an Export operation. When a resource defines either of these properties and includes them in the output data for an instance during an Export operation DSC hoists those values to thenameandmetadata.Microsoft.Dsc.securityContextin the exported resource instance. -
Added the
_metadatacanonical property. When a resource includes this canonical property in its resource instance JSON Schema:- DSC passes the properties defined in the
metadatafield of the resource instance to the resource by inserting the metadata into the_metadatakey of the resource properties. - DSC hoists any data returned by the resource in the
_metadataproperty from an Export operation into themetadatafield in the exported resource instance.
- DSC passes the properties defined in the
-
Added the
_restartRequiredcanonical property. When a resource includes this canonical property in its resource instance JSON Schema, the resource can include the canonical property in its output to indicate that the machine, specific services, or specific processes need to be restarted.This canonical property replaces
_rebootRequestedwhich was defined but had no integration with the DSC engine. -
Added support for defining resource type arguments in the
argsfield for resource adapter manifests to simplify implementing adapters that operate on a single resource instance. You can define this argument to pass the fully qualified type name of the adapted resource instance to the adapter. -
Renamed the
adapter.configfield in resource manifests toinputKind. The old name is retained for compatibility purposes. -
Improved the error message for duplicate resource instances to include the fully qualified type name for the duplicated instance. DSC raises an error for duplicate instances when more than one instance has the same fully qualified type name (
typefield) and instance name (name) field.Prior to this release, DSC only included the instance name in the error message, implying that defining any two instances with the same name, even with different resource types, is invalid.
-
Added the canonical
_nameproperty to theMicrosoft/OSInforesource, so exporting that resource automatically defines the exported instance'snamefield as:<OS Family> <OS version> [<OS architecture>]Where the final segment is only defined if the operating system architecture is discoverable.
Related work items
- Issues: None.
- PRs: #1038
-
Fixed handling for secure strings and objects in the engine to prevent accidentally leaking secure data in trace messaging and output.
-
Fixed a bug that prevented DSC from correctly deserializing data from UTF-8 files with a byte order mark (BOM) by removing the BOM prior to deserialization.
-
Fixed a bug that caused DSC to raise a terminating error when it encounters a DSC manifest that the engine can't parse during discovery. This caused an invalid manifest to break all DSC operations. Starting with this release DSC raises an informational message about manifests it can't correctly read and continues processing.
Related work items
- Issues: None.
- PRs: #1445
-
Fixed a bug that caused DSC to try writing to a broken pipe when piped to commands that stop processing when the piped-to command no longer needs input from the
dscCLI, likedsc resource list | Select-Object -First 1in PowerShell.Related work items
- Issues: None.
- PRs: #1154
-
Fixed a bug that prevented referencing other parameters in the
defaultValuefield for a parameter definition in a configuration document. -
Fixed the automatic name generation for exported instances of resources that don't define the canonical
_nameproperty. Prior to this release, the exported instances defined thenamefield as<fully qualified type name>-<zero-index>, likeMicrosoft/OSInfo-0. This generated string is invalid for the JSON Schema that validates thenamefield, which forbids forward slashes (/).Starting with this release the automatic name generation uses only the final segment of the fully qualified type name and starting the index at
1instead of0(<name>-<index>), likeOSInfo-1. -
Fixed a bug that sometimes caused unnecessary parsing of configuration expressions for implicit adapted resource instances, causing DSC to raise an erroneous error.
-
Fixed a bug that prevented DSC from correctly invoking the Delete operation for resources that have the
_existcanonical property, have thedeletecapability, and don't have thesetHandlesExistcapability. Prior to this release, invoking thedsc resource setcommand to remove an instance by setting_existtofalsefailed to correctly invoke the Delete operation.Starting with this release, DSC correctly invokes the Delete operation to remove the resource instance. This ensures the behavior of a resource instance is consistent when using
dsc config setanddsc resource setto remove a specific resource instance. -
Fixed discovery of the
Export()method for class-based PSDSC resources in theMicrosoft.Windows/WindowsPowerShellandMicrosoft.DSC/PowerShelladapters. -
Fixed property discovery for PSDSC resources in the
Microsoft.Windows/WindowsPowerShelladapter to no longer emit theDependsOnorPSDscRunAsCredentialcommon properties, bringing the resource property definitions into alignment withMicrosoft.DSC/PowerShell. -
Fixed a bug for class-based PSDSC resources in the
Microsoft.DSC/PowerShelladapter that caused PSDSC resource classes with a[SecureString]type property from instantiating. -
Fixed handling for passing username and password (
[pscredential]PowerShell type) to adapted PSDSC resources to correctly convert secure objects into credentials before invoking the adapted resource.Related work items
- Issues: None.
- PRs: #1308
-
Fixed the
Microsoft.Windows/WindowsPowerShelladapter to prevent raising an error when thePSModulePathenvironmental variable contains any empty path segments. Prior to this release, the adapter would raise an error because PSDSC discovery fails whenPSModulePathdefines any empty segments. -
Fixed the
Microsoft.Windows/WindowsPowerShelladapter to suppress writing progress information from PSDSC. DSC already includes its own progress reporting and the Windows PowerShell progress implementation can consume extra resources, impacting the system. -
Fixed a bug in the build for the
Microsoft.Windows/WMIadapter to ensure the required PowerShell files are included in the installation archive. In previous releases the archive included the resource manifest but not the related script and data files the adapter depends on, making it unusable. -
Fixed a bug in the
Microsoft.DSC.Debug/Echoresource that caused the JSON Schema to incorrectly represent a resource instance and prevent any validation errors, even when theoutputincludes malformed secure string or secure object values.
v3.1.3 - 2026-06-15
This section includes a summary of changes for the 3.1.3 patch release. For the full list of
changes in this release, see the diff on GitHub.
-
Fixed a bug that causes older versions of DSC to raise errors when installed on the same system as newer versions with manifests that define new fields.
Starting with this release, DSC emits info messages when it discovers incompatible manifests and skips processing those manifests instead of failing the execution immediately. This enables you to install multiple versions of DSC for testing, such as preparing for an upgrade.
Related work items
- Issues: None.
- PRs: #1446
v3.1.2 - 2026-06-15
This section includes a summary of changes for the 3.1.2 patch release. For the full list of
changes in this release, see the diff on GitHub.
-
Fixed a bug that caused errors when specifying the relative path to an executable in a resource manifest. Starting with this release, DSC correctly resolves relative paths for resource manifest executables.
v3.1.1 - 2025-07-14
This section includes a summary of changes for the 3.1.1 patch release. For the full list of
changes in this release, see the diff on GitHub.
-
Fixed a bug that caused DSC to default output format to JSON instead of YAML when you use a
dsc resourcecommand without capturing or redirecting the output.
v3.1.0 - 2025-06-18
This section includes a summary of changes for the 3.1.0 release. For the full list of changes
in this release, see the diff on GitHub.
-
Added support for defining adapted resource instances in configuration documents without explicitly nesting them inside an instance of the adapter resource. This simplifies the authoring for configuration documents, but comes with a potential performance tradeoff, as DSC has to invoke the adapter for each adapted instance separately.
-
Added new configuration functions:
-
Use the
equals()function to compare two values, returningtrueif the values are equal and otherwisefalse. The comparison is alwaysfalseif the two values are of a different type. When comparing strings, the comparison is case-sensitive.For example,
equals('a', 'A')would evaluate tofalse. -
Use the
if()function to conditionally return one of two values. The first argument to the function defines the condition and must evaluate to a boolean value. If the conditional argument evaluates totrue, the function returns the second argument. If the conditional argument evaluates tofalse, the function returns the third argument.For example,
if(equals('a', 'b'), 'left', 'right')would evaluate toright. -
Use the experimental
format()function to create a string that interpolates one or more values. When you use this experimental function, DSC currently emits a warning. This function only supports a subset of the data types supported in the ARM template syntax.For example,
format('hello {0} - {1:X}', 'world', 12)would evaluate tohello world - c.
-
-
Added support for extensions to DSC. You can now use the
dsc extension listcommand to enumerate available extensions. DSC now supports a single extension capability,discover, which returns JSON objects indicating where to find DSC resource manifests that aren't in thePATHorDSC_RESOURCE_PATH, as with resources installed as Appx packages.Now when DSC performs discovery, it recursively discovers extensions and resources on the system.
This release also includes an experimental extension for discovering resources installed as Appx packages.
-
Adds support for passing parameters to the
dsc configcommands from stdin. You can pass either the configuration document or parameters file contents to the command from stdin, but not both. This enables securely passing sensitive parameters to DSC without writing them to a file or defining them as an environment variable. -
Added the
--inputand--fileoptions to the dsc resource export command to enable filtering the exported instances.Prior to this change, DSC would send resources the defined properties for filtering when a user invoked the
dsc config exportcommand, but the same behavior wasn't available when directly invoking the Export operation on a resource. -
Added the YAML document separator (
---) between output objects when you invoke a DSC command with YAML as the output format. Prior to this change, it was dificult to distinguish between output objects and to parse the output programmatically. -
Added the
table-no-truncateformat option to thedsc resource listcommand to avoid truncating the table due to the width of the console. -
Added the
json-arrayformat option to thedsc resource get --allcommand for easier integration and scripting. -
Added the
pass-throughformat option to thedsc resource getcommand to return the data directly from the resource without wrapping it in a result. This enables usage by higher order tools without requiring them to unwrap the result object.Related work items
- Issues: None
- PRs: #862
-
Added the
exporterresource kind. You can now define a DSC resource that only implements the Export operation to use for inventory and fact-gathering scenarios. Resources with thekindfield in their manifest set toexportermust return full resource instances as JSONLINEs. DSC then recursively invokes the Export operation for those returned instances, enabling you to dynamically generate an inventory without specifying every single resource type you want to retrieve from the system. -
Added support for the
Microsoft.Windows/Registryresource to support defining a registry value without any data (RZ_NONE). Prior to this change, users were required to specify both thevalueNameandvalueDataproperties when defining a registry value. Starting with this release, you can define an instance of the resource withoutvalueData. -
Added a warning message during resource discovery when DSC finds a resource manifest that includes an executable that doesn't exist. This helps inform a user about whether a resource manifest is invalid before making any attempts to invoke that resource directly or starting a broader configuration operation.
Related work items
- Issues: None
- PRs: #688
-
Added support for the Export operation to the
Microsoft.Windows/WindowsPowerShelladapter. This functionality mirrors the capability of theMicrosoft.DSC/PowerShelladapter and only supports Export for adapted PSDSC resources implemented as PowerShell classes.
-
Fixed a bug in the
Microsoft.DSC/PowerShellandMicrosoft.Windows/WindowsPowerShelladapters that caused an error when a previously cached PSDSC resource module no longer exists on the system. -
Fixed a bug that incorrectly handled resource instances without any properties defined. Prior to this change, specifying a resource instance without properties raised an error in the engine.
Related work items
- Issues: None
- PRs: #675
-
Fixed the
Microsoft.DSC.Transitional/RunCommandOnSetresource to invoke correctly duringdsc configoperations. Prior to this change, the resource never reported as being out of the desired state, so DSC never invoked the resource with thedsc config setcommand. -
Fixed a bug in the engine that erroneously dropped any metadata returned by a resource that wasn't part of the defined Microsoft.DSC metadata object. Starting with this release, all metadata emitted by a resource is correctly returned in the output for a command.
-
Fixed the behavior of the
DSC_RESOURCE_PATHenvironment variable to limit discovery for both resource manifests and executables. Prior to this change, DSC searched thePATHfor executables referenced in manifests, even whenDSC_RESOURCE_PATHis defined. Now when you set theDSC_RESOURCE_PATHvariable, DSC only uses those paths for discovery, as intended. -
Fixed the
Microsoft.Windows/Registryresource to correctly handle hives with a single subkey.Related work items
- Issues: None
- PRs: #684
-
Fixed the
Microsoft.Windows/Registryresource to correctly handle being called to delete a nonexistant key instead of erroring. -
Fixed the behavior of configuration expressions in nested instances. Prior to this change, DSC attempted to recursively resolve configuration expressions before invoking group resources, causing errors when referencing not-yet-invoked nested instances. DSC no longer recursively resolves configuration expressions, requiring the group resource to resolve nested expressions instead. Every built-in group resource provided with DSC supports resolving nested expressions.
-
Fixed error messaging for duplicate resource instance names. Prior to this change, the error message didn't correctly indicate the name of the duplicate resource instance.
-
Fixed the JSON Schema of the
Microsoft.DSC/PendingRebootresource to allow specifying whether a pending reboot is expected with theMicrosoft.DSC/Assertionresource. -
Fixed a bug in the
Microsoft.DSC/PowerShellandMicrosoft.Windows/WindowsPowerShelladapters that caused failures when a PSDSC resource defined any property with subproperties, like a hashtable or custom class. The adapters now correctly handle creating complex properties for adapted PSDSC resources. -
Fixed a bug in the caching for the
Microsoft.DSC/PowerShellandMicrosoft.Windows/WindowsPowerShelladapters that caused errors when PowerShell modules are installed, updated, or removed during a configuration operation. Starting with this release, the adapters correctly handle cache invalidation. -
Fixed support in the
Microsoft.DSC/PowerShellandMicrosoft.Windows/WindowsPowerShelladapters for passing credentials to adapted PSDSC resources. Previously, using any PSDSC resources with a PSCredential property failed because the adapters didn't correctly cast the input data. -
Fixed the handling of enum values in the
Microsoft.DSC/PowerShelladapter to return them as strings, not integers, for readability. -
Fixed the handling of hidden properties in the
Microsoft.Windows/WindowsPowerShelladapter to prevent them from being erroneously included in the output for a resource. -
Fixed bugs in the discovery for the
Microsoft.Windows/WindowsPowerShelladapter to:- Prepend the built-in module path (
$Env:SystemRoot\System32\WindowsPowerShell\1.0\Modules). - Remove PowerShell modules from the path.
- Ensure PSDSC resources implemented as classes are discoverable.
- Iindicate when a PSDSC resource can't be found that the adapter requires PSDSC resource modules
to be installed in the
AllUsersscope.
- Prepend the built-in module path (
v3.0.2 - 2025-04-08
This section includes a summary of changes for the 3.0.2 release. For the full list of changes
in this release, see the diff on GitHub.
-
Fixed the
Microsoft.DSC/PowerShellandMicrosoft.Windows/WindowsPowerShellresources to bypass execution policy when invoked. Prior to this change, the adapters would raise a nondescriptive error when the PowerShell execution policy on a machine is restricted, which is the default state. -
Fixed a bug in the
Microsoft.DSC/Assertiongroup resource that prevented it from reporting a failure when nested resource instances aren't in the desired state. Now when any nested instance for the group fails, the group reports a failure, preventing dependent resources from invoking needlessly.
v3.0.1 - 2025-03-27
This section includes a summary of changes for the 3.0.1 release. For the full list of changes
in this release, see the diff on GitHub.
-
Fixed the build for ARM64 Linux to correctly produce a
.tar.gzfile. Prior to this change, the artifact couldn't be unzipped. -
Fixed a bug in the DSC engine to correctly propagate the
_inDesiredStatecanonical property for resources that implement the Test operation. Prior to this change, the engine would erroneously perform a synthetic test, which lead to misreporting. -
Fixed the implementation for the
Microsoft.DSC/PowerShellandMicrosoft.Windows/WindowsPowerShelladapters to correctly insert the_inDesiredStatecanonical property when returning data for the Test operation. Prior to this release, the results for adapted PSDSC resources would incorrectly report their status.Related work items
- Issues: None
- PRs: #699
-
Fixed a bug in tracing that inspected messages for incorrectly cased keys, preventing DSC from surfacing those messages.
Related work items
- Issues: None
- PRs: #699
-
Fixed tracing for the
Microsoft.DSC/PowerShellandMicrosoft.Windows/WindowsPowerShelladapters to surface more useful messages during operations, particularly for debugging and error messaging.Related work items
- Issues: None
- PRs: #699
-
Fixed the progress reporting when the --progress-format option is set to
jsonby no longer displaying the progress bar when you invoke DSC interactively.Related work items
- Issues: None
- PRs: #644
-
Fixed writing progress when reporting on an indeterminate number of items by starting at
1and incrementing the counter. Prior to this change it was difficult to track progress for these items.Related work items
- Issues: None
- PRs: #644
v3.0.0 - 2025-02-28
Version 3.0.0 is the first generally available release of DSC.