diff --git a/dsc/docs-conceptual/dsc-3.0/changelog.md b/dsc/docs-conceptual/dsc-3.0/changelog.md index 6633d01..fbc413e 100644 --- a/dsc/docs-conceptual/dsc-3.0/changelog.md +++ b/dsc/docs-conceptual/dsc-3.0/changelog.md @@ -3,7 +3,7 @@ title: "Desired State Configuration changelog" description: >- A log of the changes for releases of DSC. ms.topic: whats-new -ms.date: 03/25/2025 +ms.date: 06/18/2025 --- # Changelog @@ -44,13 +44,13 @@ To see the changes for the earlier development of DSC before version `3.0.0`, se [m2]: https://semver.org/spec/v2.0.0.html [m3]: https://github.com/PowerShell/DSC/blob/main/CHANGELOG.md - -[unreleased]: https://github.com/PowerShell/DSC/compare/v3.0.0...main --> + +[unreleased]: https://github.com/PowerShell/DSC/compare/v3.0.2...main +## [v3.1.0][release-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][compare-v3.1.0]. + + +[release-v3.1.0]: https://github.com/PowerShell/DSC/releases/tag/v3.1.0 "Link to the DSC v3.1.0 release on GitHub" +[compare-v3.1.0]: https://github.com/PowerShell/DSC/compare/v3.0.2...v3.1.0 + +### 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 + + - Issues: [#693][#693] + - PRs: [#720][#720] + +
+ +- 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 + + - Issues: [#767][#767] + - PRs: + - [#770][#770] + - [#776][#776] + - [#779][#779] + +
+ +- 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_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. + + - Issues: + - [#461][#461] + - [#681][#681] + - PRs: + - [#760][#760] + - [#762][#762] + +- 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 + + - Issues: [#834][#834] + - PRs: [#863][#863] + +
+ +- Added the `--input` and `--file` options to the [dsc resource export][cli.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 + + - Issues: [#678][#678] + - PRs: [#680][#680] + +
+ +- 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 + + - Issues: [#628][#628] + - PRs: [#635][#635] + +
+ +- 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 + + - Issues: [#763][#763] + - PRs: [#823][#823] + +
+ +- Added the `json-array` format option to the `dsc resource get --all` command for easier + integration and scripting. + +
Related work items + + - Issues: [#813][#813] + - PRs: [#861][#861] + +
+ +- 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][#862] + +
+ +- Added the `exporter` [resource kind][schema.definitions.resourceKind]. 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][schema.config.resource] 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 + + - Issues: [#515][#515] + - PRs: [#682][#682] + +
+ +- 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 + + - Issues: [#683][#683] + - PRs: [#684][#684] + +
+ +- 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][#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 + + - Issues: [#811][#811] + - PRs: [#848][#848] + +
+ +### 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 + + - Issues: [#640][#640] + - PRs: [#647][#647] + +
+ +- 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][#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 + + - Issues: [#658][#658] + - PRs: [#659][#659] + +
+ +- Fixed a bug in the engine that erroneously dropped any metadata returned by a resource that + wasn't part of the defined [Microsoft.DSC][schema.metadata] metadata object. Starting with this + release, all metadata emitted by a resource is correctly returned in the output for a command. + +
Related work items + + - Issues: [#668][#668] + - PRs: [#679][#679] + +
+ +- 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 + + - Issues: [#814][#814] + - PRs: [#825][#825] + +
+ +- Fixed the `Microsoft.Windows/Registry` resource to correctly handle hives with a single subkey. + +
Related work items + + - Issues: _None_ + - PRs: [#684][#684] + +
+ +- Fixed the `Microsoft.Windows/Registry` resource to correctly handle being called to delete a + nonexistent key instead of erroring. + +
Related work items + + - Issues: [#843][#843] + - PRs: [#847][#847] + +
+ +- 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 + + - Issues: [#692][#692] + - PRs: [#695][#695] + +
+ +- 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 + + - Issues: [#841][#841] + - PRs: [#844][#844] + +
+ +- 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 + + - Issues: [#858][#858] + - PRs: [#859][#859] + +
+ +- 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 + + - Issues: [#709][#709] + - PRs: [#713][#713] + +
+ +- 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 + + - Issues: + - [#745][#745] + - [#807][#807] + - PRs: + - [#748][#748] + - [#787][#787] + +
+ +- 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 + + - Issues: [#328][#328] + - PRs: [#758][#758] + +
+ +- Fixed the handling of enum values in the `Microsoft.DSC/PowerShell` adapter to return them as + strings, not integers, for readability. + +
Related work items + + - Issues: [#791][#791] + - PRs: [#800][#800] + +
+ +- 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 + + - Issues: [#832][#832] + - PRs: [#855][#855] + +
+ +- 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 + + - Issues: + - [#707][#707] + - [#798][#798] + - PRs: + - [#764][#764] + - [#777][#777] + - [#797][#797] + - [#812][#812] + +
+ +## [v3.0.2][release-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][compare-v3.0.2]. + + +[release-v3.0.2]: https://github.com/PowerShell/DSC/releases/tag/v3.0.2 "Link to the DSC v3.0.2 release on GitHub" +[compare-v3.0.2]: https://github.com/PowerShell/DSC/compare/v3.0.1...v3.0.2 + +### 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 + + - Issues: [#714][#714] + - PRs: [#715][#715] + +
+ +- 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 + + - Issues: [#731][#731] + - PRs: [#736][#736] + +
+ +## [v3.0.1][release-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][compare-v3.0.1]. + + +[release-v3.0.1]: https://github.com/PowerShell/DSC/releases/tag/v3.0.1 "Link to the DSC v3.0.1 release on GitHub" +[compare-v3.0.1]: https://github.com/PowerShell/DSC/compare/v3.0.0...v3.0.1 + +### 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 + + - Issues: [#687][#687] + - PRs: [#690][#690] + +
+ +- 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 + + - Issues: [#674][#674] + - PRs: [#676][#676] + +
+ +- 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][#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][#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][#699] + +
+ +- Fixed the progress reporting when the [--progress-format][cli.option.p] option is set to `json` + by no longer displaying the progress bar when you invoke DSC interactively. + +
Related work items + + - Issues: _None_ + - PRs: [#644][#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][#644] + +
+ ## [v3.0.0][release-v3.0.0] - 2025-02-28 Version `3.0.0` is the first generally available release of DSC. [release-v3.0.0]: https://github.com/PowerShell/DSC/releases/tag/v3.0.0 "Link to the DSC v3.0.0 release on GitHub" + + +[cli.option.p]: ./reference/cli/index.md#--progress-format +[cli.resource.export]: ./reference/cli/resource/export.md +[schema.config.resource]: ./reference/schemas/config/resource.md +[schema.definitions.resourceKind]: ./reference/schemas/definitions/resourcekind.md +[schema.metadata]: ./reference/schemas/metadata/Microsoft.DSC/properties.md + + +[#328]: https://github.com/PowerShell/DSC/issues/328 +[#515]: https://github.com/PowerShell/DSC/issues/515 +[#628]: https://github.com/PowerShell/DSC/issues/628 +[#635]: https://github.com/PowerShell/DSC/issues/635 +[#640]: https://github.com/PowerShell/DSC/issues/640 +[#644]: https://github.com/PowerShell/DSC/issues/644 +[#647]: https://github.com/PowerShell/DSC/issues/647 +[#658]: https://github.com/PowerShell/DSC/issues/658 +[#659]: https://github.com/PowerShell/DSC/issues/659 +[#668]: https://github.com/PowerShell/DSC/issues/668 +[#674]: https://github.com/PowerShell/DSC/issues/674 +[#675]: https://github.com/PowerShell/DSC/issues/675 +[#676]: https://github.com/PowerShell/DSC/issues/676 +[#678]: https://github.com/PowerShell/DSC/issues/678 +[#679]: https://github.com/PowerShell/DSC/issues/679 +[#680]: https://github.com/PowerShell/DSC/issues/680 +[#682]: https://github.com/PowerShell/DSC/issues/682 +[#683]: https://github.com/PowerShell/DSC/issues/683 +[#684]: https://github.com/PowerShell/DSC/issues/684 +[#687]: https://github.com/PowerShell/DSC/issues/687 +[#688]: https://github.com/PowerShell/DSC/issues/688 +[#690]: https://github.com/PowerShell/DSC/issues/690 +[#692]: https://github.com/PowerShell/DSC/issues/692 +[#693]: https://github.com/PowerShell/DSC/issues/693 +[#695]: https://github.com/PowerShell/DSC/issues/695 +[#699]: https://github.com/PowerShell/DSC/issues/699 +[#709]: https://github.com/PowerShell/DSC/issues/709 +[#713]: https://github.com/PowerShell/DSC/issues/713 +[#714]: https://github.com/PowerShell/DSC/issues/714 +[#715]: https://github.com/PowerShell/DSC/issues/715 +[#720]: https://github.com/PowerShell/DSC/issues/720 +[#731]: https://github.com/PowerShell/DSC/issues/731 +[#736]: https://github.com/PowerShell/DSC/issues/736 +[#745]: https://github.com/PowerShell/DSC/issues/745 +[#748]: https://github.com/PowerShell/DSC/issues/748 +[#758]: https://github.com/PowerShell/DSC/issues/758 +[#764]: https://github.com/PowerShell/DSC/issues/764 +[#787]: https://github.com/PowerShell/DSC/issues/787 +[#807]: https://github.com/PowerShell/DSC/issues/807 +[#767]: https://github.com/PowerShell/DSC/issues/767 +[#770]: https://github.com/PowerShell/DSC/issues/770 +[#776]: https://github.com/PowerShell/DSC/issues/776 +[#779]: https://github.com/PowerShell/DSC/issues/779 +[#707]: https://github.com/PowerShell/DSC/issues/707 +[#777]: https://github.com/PowerShell/DSC/issues/777 +[#461]: https://github.com/PowerShell/DSC/issues/461 +[#681]: https://github.com/PowerShell/DSC/issues/681 +[#760]: https://github.com/PowerShell/DSC/issues/760 +[#762]: https://github.com/PowerShell/DSC/issues/762 +[#797]: https://github.com/PowerShell/DSC/issues/797 +[#798]: https://github.com/PowerShell/DSC/issues/798 +[#812]: https://github.com/PowerShell/DSC/issues/812 +[#791]: https://github.com/PowerShell/DSC/issues/791 +[#800]: https://github.com/PowerShell/DSC/issues/800 +[#763]: https://github.com/PowerShell/DSC/issues/763 +[#823]: https://github.com/PowerShell/DSC/issues/823 +[#841]: https://github.com/PowerShell/DSC/issues/841 +[#844]: https://github.com/PowerShell/DSC/issues/844 +[#843]: https://github.com/PowerShell/DSC/issues/843 +[#847]: https://github.com/PowerShell/DSC/issues/847 +[#811]: https://github.com/PowerShell/DSC/issues/811 +[#848]: https://github.com/PowerShell/DSC/issues/848 +[#814]: https://github.com/PowerShell/DSC/issues/814 +[#825]: https://github.com/PowerShell/DSC/issues/825 +[#832]: https://github.com/PowerShell/DSC/issues/832 +[#855]: https://github.com/PowerShell/DSC/issues/855 +[#813]: https://github.com/PowerShell/DSC/issues/813 +[#861]: https://github.com/PowerShell/DSC/issues/861 +[#858]: https://github.com/PowerShell/DSC/issues/858 +[#859]: https://github.com/PowerShell/DSC/issues/859 +[#862]: https://github.com/PowerShell/DSC/issues/862 +[#834]: https://github.com/PowerShell/DSC/issues/834 +[#863]: https://github.com/PowerShell/DSC/issues/863