Skip to content

Latest commit

 

History

History
1985 lines (1470 loc) · 71.6 KB

File metadata and controls

1985 lines (1470 loc) · 71.6 KB
title Desired State Configuration changelog
description A log of the changes for releases of DSC.
ms.topic whats-new
ms.date 03/25/2025

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.

Added

  • Added what-if support to the MCP server tools. The invoke_dsc_config tool now accepts a what_if option for the set operation, and the invoke_dsc_resource tool accepts what_if for the set and delete operations. This mirrors the --what-if flag on the dsc config set, dsc resource set, and dsc resource delete commands, enabling AI agents to preview changes before applying them. Passing what_if with 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

  • Fixed several bugs with the Microsoft.DSC.Transitional/PowerShellScript and Microsoft.DSC.Transitional/WindowsPowerShellScript resources:

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

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.

Fixed

  • 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 includeQuotes field to wrap the path in quotes before constructing the command invocation for the resource.

    This new option is set for the Microsoft.Adapter/PowerShell and Microsoft.Adapter/WindowsPowerShell adapters to enable them to correctly invoke PSDSC resources installed in a path that contains spaces.

    Related work items

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

  • Added the dsc mcp command 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_resources
    • list_adapted_resources
    • show_dsc_resource
    • list_dsc_resource
    • invoke_dsc_resource
    • invoke_dsc_config
    Related work items
  • Added the dsc function list command to enumerate the available DSC configuration functions.

    Related work items
    • Issues: None
    • PRs: #959
  • Added the --what-if CLI option to the dsc resource set and dsc resource delete commands 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-format CLI option to the dsc resource delete command, 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-if option DSC returns no data to stdout.

    Related work items
  • Added the --noop and --dry-run aliases for the --what-if CLI option in the dsc config set, dsc resource set, and dsc resource delete commands.

    Related work items
  • Added support for using both the --parameters-file and --parameters CLI options for the same dsc config subcommands, enabling you to use a parameters file and override the values in that file with the --parameters option. Prior to this release you could use either --parameters or --parameters-file but not both with the same command execution.

    Related work items
  • Added the --version CLI option to the dsc 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 --version option DSC raises an error.

    Related work items
  • 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 executionInformation field to replace the use of the Microsoft.DSC namespace in the metadata field for DSC command output. In this release, the execution information is duplicated in both executionInformation and metadata.Microsoft.DSC to maintain backwards compatibility for tools and scripts that process DSC output. In DSC version 4.0.0, the results will no longer include the metadata.Microsoft.DSC field.

    Related work items
  • Added the y2j tool 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.

    Related work items
  • Added support for defining extensions that can retrieve secrets and the secret() configuration function for retrieving secrets from an extension.

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

    Related work items
  • Added the experimental Microsoft.PowerShell/Discover extension 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.

    Related work items
  • Added support for synthetic Export operations for resources that don't have the export capability. For these resources, DSC instead invokes the Get operation on the resource, using the defined properties for the instance. The actual state of the resource is then inserted into the export configuration document.

    Related work items
  • Added the top-level function field to configuration documents, enabling you to define custom functions you can use in the rest of the configuration document.

    Related work items
  • Added the top-level outputs field to configuration documents, enabling you to retrieve custom representations of the data emitted by resources in the document for final output.

    Related work items
  • Added the top-level directives field 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 duringDeployment to 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 the securityContext field in the Microsoft.DSC namespace of the document's metadata field. Using metadata to define this directive now raises a warning that indicates the field is deprecated.

      If you define both directives.securityContext and metadata.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.

    Related work items
  • Added new fields to resource instances in a configuration document:

    • condition enables you to only invoke the instance when the value for this field evaluates to true.

    • copy enables 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 copy field. To avoid breaking those users the functionality remains in the DSC engine but is deprecated. If you use the copy field DSC raises a warning to indicate that you should not rely on this functionality as it will be removed in DSC version 4.0.0.

    • requireVersion enables you to pin a resource instance to a specific version or a range of versions. This field is aliased to apiVersion for compatibility purposes.

    Related work items
  • Added new configuration functions:

    • and() - evaluates to true if all parameters evaluate to true
    • bool() - converts a string or numerical value to true or false
    • true() - returns the boolean value true
    • false() - returns the boolean value false
    • not() - returns the opposite of the input boolean value
    • or() - evaluates to true if any parameter evaluates to true
    • less() - evaluates to true if the first parameter is less than the second parameter. Supports comparing numbers and strings.
    • lessOrEquals() - evaluates to true if the first parameter is less than or equal to the second parameter. Supports comparing numbers and strings.
    • greater() - evaluates to true if the first parameter is greater than the second parameter. Supports comparing numbers and strings.
    • greaterOrEquals() - evaluates to true if 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()
    Related work items
  • Added support for using configuration functions in the name field for resource instances in a configuration document. Prior to this release, specifying a configuration function for this field raised an error.

    Related work items
  • 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:
  • Added the metadata field 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:
  • Added the condition field 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 condition or defines condition with an expression that evaluates to true, DSC discovers the resource or extension as normal.
    • If the manifest defines condition and the expression evaluates to false, 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 pwsh being 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:
  • Added the directives field 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 the directives.securityContext for 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.args and delete.args fields in resource manifests, enabling authors to define an argument to pass to the resource command to indicate it should operate in what-if mode.

    Related work items
  • Added support for resources returning the metadata._refreshEnv field 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.

    Related work items
  • Added support for deprecating resources and extensions by defining the deprecationMessage field 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.

    Related work items
  • Added the set.whatIfReturns field 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 as set.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/PowerShell adapter uses adapted resource manifests for discovery. The Microsoft.Adapter/WindowsPowerShell adapter still has to dynamically discover PSDSC resources because it depends on the PSDSC v1.1 engine.

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

    Related work items
  • 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 the Subsystem keyword in the configuration file for an SSH server.
    • Microsoft.OpenSSH.SSHD/SubsystemList - Manages multiple entries for the Subsystem keyword 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.
    Related work items
  • 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.
    Related work items
  • Added new adapters for PowerShell and Windows PowerShell, replacing the existing adapters which are now marked as deprecated:

    • Microsoft.Adapter/PowerShell replaces Microsoft.DSC/PowerShell.
    • Microsoft.Adapter/WindowsPowerShell replaces Microsoft.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 version 4.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 requireAdapter directive. 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/UpdateList
    • Microsoft.Windows/OptionalFeatureList
    • Microsoft.Windows/Service
    • Microsoft.Windows/FeatureOnDemandList
    • Microsoft.Windows/FirewallRuleList
    Related work items
  • Added support for the Set operation to the Microsoft.Windows/WMI adapter.

    Related work items
  • Added support for filtered Export operations to the Microsoft.DSC/PowerShell adapter. 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.

    Related work items
  • Added the canonical properties _name and _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 the name and metadata.Microsoft.Dsc.securityContext in the exported resource instance.

    Related work items
  • Added the _metadata canonical property. When a resource includes this canonical property in its resource instance JSON Schema:

    • DSC passes the properties defined in the metadata field of the resource instance to the resource by inserting the metadata into the _metadata key of the resource properties.
    • DSC hoists any data returned by the resource in the _metadata property from an Export operation into the metadata field in the exported resource instance.
    Related work items
  • Added the _restartRequired canonical 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 _rebootRequested which was defined but had no integration with the DSC engine.

    Related work items
  • Added support for defining resource type arguments in the args field 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.

    Related work items
  • Renamed the adapter.config field in resource manifests to inputKind. The old name is retained for compatibility purposes.

    Related work items
  • 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 (type field) 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.

    Related work items
  • Added the canonical _name property to the Microsoft/OSInfo resource, so exporting that resource automatically defines the exported instance's name field 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

  • Fixed handling for secure strings and objects in the engine to prevent accidentally leaking secure data in trace messaging and output.

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

    Related work items
  • 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 dsc CLI, like dsc resource list | Select-Object -First 1 in PowerShell.

    Related work items
    • Issues: None.
    • PRs: #1154
  • Fixed a bug that prevented referencing other parameters in the defaultValue field for a parameter definition in a configuration document.

    Related work items
  • Fixed the automatic name generation for exported instances of resources that don't define the canonical _name property. Prior to this release, the exported instances defined the name field as <fully qualified type name>-<zero-index>, like Microsoft/OSInfo-0. This generated string is invalid for the JSON Schema that validates the name field, 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 1 instead of 0 (<name>-<index>), like OSInfo-1.

    Related work items
  • Fixed a bug that sometimes caused unnecessary parsing of configuration expressions for implicit adapted resource instances, causing DSC to raise an erroneous error.

    Related work items
  • Fixed a bug that prevented DSC from correctly invoking the Delete operation for resources that have the _exist canonical property, have the delete capability, and don't have the setHandlesExist capability. Prior to this release, invoking the dsc resource set command to remove an instance by setting _exist to false failed 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 set and dsc resource set to remove a specific resource instance.

    Related work items
  • Fixed discovery of the Export() method for class-based PSDSC resources in the Microsoft.Windows/WindowsPowerShell and Microsoft.DSC/PowerShell adapters.

    Related work items
  • Fixed property discovery for PSDSC resources in the Microsoft.Windows/WindowsPowerShell adapter to no longer emit the DependsOn or PSDscRunAsCredential common properties, bringing the resource property definitions into alignment with Microsoft.DSC/PowerShell.

    Related work items
  • Fixed a bug for class-based PSDSC resources in the Microsoft.DSC/PowerShell adapter that caused PSDSC resource classes with a [SecureString] type property from instantiating.

    Related work items
  • 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/WindowsPowerShell adapter to prevent raising an error when the PSModulePath environmental variable contains any empty path segments. Prior to this release, the adapter would raise an error because PSDSC discovery fails when PSModulePath defines any empty segments.

    Related work items
  • Fixed the Microsoft.Windows/WindowsPowerShell adapter 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.

    Related work items
  • Fixed a bug in the build for the Microsoft.Windows/WMI adapter 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.

    Related work items
  • Fixed a bug in the Microsoft.DSC.Debug/Echo resource that caused the JSON Schema to incorrectly represent a resource instance and prevent any validation errors, even when the output includes malformed secure string or secure object values.

    Related work items

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

  • 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

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

    Related work items

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

  • Fixed a bug that caused DSC to default output format to JSON instead of YAML when you use a dsc resource command without capturing or redirecting the output.

    Related work items

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.

  • Adds 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 dificult 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 nonexistant 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.
    • Iindicate 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 lead 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.