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:
- Download the latest release from the PowerShell/DSC repository.
- Expand the release archive.
- 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:
Get-Content ./web.config.dsc.yaml | dsc config set
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
Please add a package to the native Winget repo source for those barred from using the store source.
Powershell module version, FWIW, something like: