March 12th, 2025

Get started with Microsoft Desired State Configuration v3.0.0

Jason Helmick
SR. PRODUCT MANAGER

This is the second post in a multi-part series about the new release of DSC.

Microsoft Desired State Configuration (DSC) v3.0.0 is a modern, cross-platform configuration management framework designed to help administrators and developers declaratively define and enforce system states. Whether you’re managing infrastructure, deploying applications, or automating system configurations, DSC provides a flexible and scalable approach to configuration as code.

TIP

This post uses the following terminology:

  • DSC refers to Desired State Configuration (DSC) v3.0.0.
  • PSDSC refers to PowerShell Desired State Configuration (PSDSC) v1.1 and v2.

Installing DSC

To get started, follow these steps to install DSC on your system:

On Windows, you can install DSC from the Microsoft Store using winget. By installing from the Store or using winget, you get automatic updates for DSC.

winget search DesiredStateConfiguration winget install --id <insert-package-id> --source msstore

On Linux and macOS, you can install DSC using the following steps:

  1. Download the latest release from the PowerShell/DSC repository.
  2. Expand the release archive.
  3. Add the folder containing the expanded archive contents to your PATH environment variable.

Getting started with the DSC command

The dsc command operates on a configuration document or invokes specific resources to manage settings.

Run the following command to display the dsc command help:

dsc --help
Apply configuration or invoke specific DSC resources Usage: dsc.exe [OPTIONS] <COMMAND> Commands: completer Generate a shell completion script config Apply a configuration document resource Invoke a specific DSC resource schema Get the JSON schema for a DSC type help Print this message or the help of the given subcommand(s) Options: -l, --trace-level <TRACE_LEVEL> Trace level to use [possible values: error, warn, info, debug, trace] -t, --trace-format <TRACE_FORMAT> Trace format to use [default: default] [possible values: default, plaintext, json] -h, --help Print help -V, --version Print version

Use the command to get version information.

dsc --version
dsc 3.0.0

To learn more, see the dsc command reference documentation.

Access DSC resources with dsc resource

The dsc resource command displays or invokes a specific DSC resource. The dsc resource command contains subcommands for listing DSC resources and invoking them directly.

Use the following command to display a list of installed DSC resources.

dsc resource list
Type Kind Version Caps RequireAdapter Description ---------------------------------------------------------------------------------------------------- Microsoft.DSC.Transitional/RunCommandOnSet Resource 0.1.0 gs------ Takes a si… Microsoft.DSC/Assertion Group 0.1.0 gs--t--- `test` wil… Microsoft.DSC/Group Group 0.1.0 gs--t--- All resour… Microsoft.DSC/PowerShell Adapter 0.1.0 gs--t-e- Resource a… Microsoft.Windows/RebootPending Resource 0.1.0 g------- Returns in… Microsoft.Windows/Registry Resource 0.1.0 gs-w-d-- Manage Win… Microsoft.Windows/WMI Adapter 0.1.0 g------- Resource a… Microsoft.Windows/WindowsPowerShell Adapter 0.1.0 gs--t--- Resource a…

When the command includes the adapter option, dsc checks for any resource adapters with a matching name. Classic PowerShell resources are part of the Microsoft.Windows/WindowsPowerShell adapter.

dsc resource list --adapter Microsoft.Windows/WindowsPowerShell
Partial listing Type Kind Version Caps RequireAdapter ---------------------------------------------------------------------------------------------------- PSDesiredStateConfiguration/Archive Resource 1.1 gs--t--- Microsoft.Windo… PSDesiredStateConfiguration/Environment Resource 1.1 gs--t--- Microsoft.Windo… PSDesiredStateConfiguration/File Resource 1.0.0 gs--t--- Microsoft.Windo… PSDesiredStateConfiguration/Group Resource 1.1 gs--t--- Microsoft.Windo… PSDesiredStateConfiguration/GroupSet Resource 1.1 gs--t--- Microsoft.Windo… PSDesiredStateConfiguration/Log Resource 1.1 gs--t--- Microsoft.Windo…

To learn more, see the dsc resource command reference documentation.

Manage a basic configuration

The dsc config command includes subcommands for managing the resource instances defined in a DSC configuration document.

The following YAML configuration document calls the classic PowerShell resource WindowsFeature from the PSDesiredStateConfiguration module to install a Windows web server (IIS) on Windows Server.

$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2024/04/config/document.json resources: - name: Use Windows PowerShell resources type: Microsoft.Windows/WindowsPowerShell properties: resources: - name: Web server install type: PSDesiredStateConfiguration/WindowsFeature properties: Name: Web-Server Ensure: Present

To set a machine to the configuration, use the dsc config set subcommand. The following example shows how you can send the configuration document to DSCv3 using PowerShell:

dsc config get --file ./web.comfig.dsc.yaml

To learn more, see the dsc config command reference documentation.

Next steps

Learn more about Authoring Enhancements in Desired State Configuration v3.0.0.

Call to action

For more information about DSC v3.0, see the DSCv3 documentation. We value your feedback. Stop by our GitHub repository and let us know of any issues you find.

Jason Helmick

Sr. Product Manager, PowerShell

Author

Jason Helmick
SR. PRODUCT MANAGER

Nice to meet you! I’m a Product Manager on the PowerShell team at Microsoft. My focus is on all things PowerShell including Predictive IntelliSense, Crescendo, DSC and PlatyPS. One favorite pastime is working with the rapidly growing PowerShell community.

4 comments

  • gijs reijn

    Perhaps a small remark on the schema reference to update it towards:

    $schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
  • YetAnother TechMonkey · Edited

    Please add a package to the native Winget repo source for those barred from using the store source.

    Powershell module version, FWIW, something like:

    Find-WinGetPackage -Name DesiredStateConfiguration -Source msstore | ? Name -NotMatch Preview | Install-WinGetPackage
    • Colin Westwater

      Seconded. Please put it in the winget repo source. msstore is blocked at work