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:
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
Can one write configurations in PowerShell, like one can for the AWS CDK?
AWS CDK in PowerShell
Perhaps a small remark on the schema reference to update it towards:
Please add a package to the native Winget repo source for those barred from using the store source.
Powershell module version, FWIW, something like:
Seconded. Please put it in the winget repo source. msstore is blocked at work