Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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.
Added new configuration functions:
Use the
equals()
function to compare two values, returningtrue
if the values are equal and otherwisefalse
. The comparison is alwaysfalse
if 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 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 thePATH
orDSC_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.
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.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.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.Added the
table-no-truncate
format option to thedsc resource list
command to avoid truncating the table due to the width of the console.Added the
json-array
format option to thedsc resource get --all
command for easier integration and scripting.Added the
pass-through
format option to thedsc 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 thekind
field in their manifest set toexporter
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.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 thevalueName
andvalueData
properties 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/WindowsPowerShell
adapter. This functionality mirrors the capability of theMicrosoft.DSC/PowerShell
adapter and only supports Export for adapted PSDSC resources implemented as PowerShell classes.
Fixed
Fixed a bug in the
Microsoft.DSC/PowerShell
andMicrosoft.Windows/WindowsPowerShell
adapters 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/RunCommandOnSet
resource to invoke correctly duringdsc config
operations. Prior to this change, the resource never reported as being out of the desired state, so DSC never invoked the resource with thedsc config set
command.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_PATH
environment variable to limit discovery for both resource manifests and executables. Prior to this change, DSC searched thePATH
for executables referenced in manifests, even whenDSC_RESOURCE_PATH
is defined. Now when you set theDSC_RESOURCE_PATH
variable, DSC only uses those paths for discovery, as intended.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.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/PendingReboot
resource to allow specifying whether a pending reboot is expected with theMicrosoft.DSC/Assertion
resource.Fixed a bug in the
Microsoft.DSC/PowerShell
andMicrosoft.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.Fixed a bug in the caching for the
Microsoft.DSC/PowerShell
andMicrosoft.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.Fixed support in the
Microsoft.DSC/PowerShell
andMicrosoft.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.Fixed the handling of enum values in the
Microsoft.DSC/PowerShell
adapter to return them as strings, not integers, for readability.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.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.
- 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
Fixed the
Microsoft.DSC/PowerShell
andMicrosoft.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.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.
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.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.Fixed the implementation for the
Microsoft.DSC/PowerShell
andMicrosoft.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
andMicrosoft.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.