Edit

Share via


Changelog

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.

Unreleased

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.

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

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

    Related work items
  • Added new configuration functions:

    • Use the equals() function to compare two values, returning true if the values are equal and otherwise false. The comparison is always false if the two values are of a different type. When comparing strings, the comparison is case-sensitive.

      For example, equals('a', 'A') would evaluate to false.

    • 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 to true, the function returns the second argument. If the conditional argument evaluates to false, the function returns the third argument.

      For example, if(equals('a', 'b'), 'left', 'right') would evaluate to right.

    • 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 to hello world - c.

    Related work items
  • Added support for extensions to DSC. You can now use the dsc extension list command 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 the PATH or DSC_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.

    Related work items
  • Addes support for passing parameters to the dsc config commands 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.

    Related work items
  • Added the --input and --file options 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 export command, but the same behavior wasn't available when directly invoking the Export operation on a resource.

    Related work items
  • 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 difficult to distinguish between output objects and to parse the output programmatically.

    Related work items
  • Added the table-no-truncate format option to the dsc resource list command to avoid truncating the table due to the width of the console.

    Related work items
  • Added the json-array format option to the dsc resource get --all command for easier integration and scripting.

    Related work items
  • Added the pass-through format option to the dsc resource get command 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 exporter resource kind. You can now define a DSC resource that only implements the Export operation to use for inventory and fact-gathering scenarios. Resources with the kind field in their manifest set to exporter must 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.

    Related work items
  • Added support for the Microsoft.Windows/Registry resource to support defining a registry value without any data (RZ_NONE). Prior to this change, users were required to specify both the valueName and valueData properties when defining a registry value. Starting with this release, you can define an instance of the resource without valueData.

    Related work items
  • 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/WindowsPowerShell adapter. This functionality mirrors the capability of the Microsoft.DSC/PowerShell adapter and only supports Export for adapted PSDSC resources implemented as PowerShell classes.

    Related work items

Fixed

  • Fixed a bug in the Microsoft.DSC/PowerShell and Microsoft.Windows/WindowsPowerShell adapters that caused an error when a previously cached PSDSC resource module no longer exists on the system.

    Related work items
  • 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/RunCommandOnSet resource to invoke correctly during dsc config operations. Prior to this change, the resource never reported as being out of the desired state, so DSC never invoked the resource with the dsc config set command.

    Related work items
  • 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.

    Related work items
  • Fixed the behavior of the DSC_RESOURCE_PATH environment variable to limit discovery for both resource manifests and executables. Prior to this change, DSC searched the PATH for executables referenced in manifests, even when DSC_RESOURCE_PATH is defined. Now when you set the DSC_RESOURCE_PATH variable, DSC only uses those paths for discovery, as intended.

    Related work items
  • Fixed the Microsoft.Windows/Registry resource to correctly handle hives with a single subkey.

    Related work items
    • Issues: None
    • PRs: #684
  • Fixed the Microsoft.Windows/Registry resource to correctly handle being called to delete a nonexistent key instead of erroring.

    Related work items
  • 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.

    Related work items
  • 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.

    Related work items
  • Fixed the JSON Schema of the Microsoft.DSC/PendingReboot resource to allow specifying whether a pending reboot is expected with the Microsoft.DSC/Assertion resource.

    Related work items
  • Fixed a bug in the Microsoft.DSC/PowerShell and Microsoft.Windows/WindowsPowerShell adapters 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.

    Related work items
  • Fixed a bug in the caching for the Microsoft.DSC/PowerShell and Microsoft.Windows/WindowsPowerShell adapters 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.

    Related work items
  • Fixed support in the Microsoft.DSC/PowerShell and Microsoft.Windows/WindowsPowerShell adapters 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.

    Related work items
  • Fixed the handling of enum values in the Microsoft.DSC/PowerShell adapter to return them as strings, not integers, for readability.

    Related work items
  • Fixed the handling of hidden properties in the Microsoft.Windows/WindowsPowerShell adapter to prevent them from being erroneously included in the output for a resource.

    Related work items
  • Fixed bugs in the discovery for the Microsoft.Windows/WindowsPowerShell adapter 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.
    • Indicate when a PSDSC resource can't be found that the adapter requires PSDSC resource modules to be installed in the AllUsers scope.
    Related work items

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

  • Fixed the Microsoft.DSC/PowerShell and Microsoft.Windows/WindowsPowerShell resources 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.

    Related work items
  • Fixed a bug in the Microsoft.DSC/Assertion group 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.

    Related work items

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

  • Fixed the build for ARM64 Linux to correctly produce a .tar.gz file. Prior to this change, the artifact couldn't be unzipped.

    Related work items
  • Fixed a bug in the DSC engine to correctly propagate the _inDesiredState canonical property for resources that implement the Test operation. Prior to this change, the engine would erroneously perform a synthetic test, which leads to misreporting.

    Related work items
  • Fixed the implementation for the Microsoft.DSC/PowerShell and Microsoft.Windows/WindowsPowerShell adapters to correctly insert the _inDesiredState canonical 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/PowerShell and Microsoft.Windows/WindowsPowerShell adapters 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 json by 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 1 and 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.