Fundamentals and Context
- Declarative configuration: desired state, idempotency, the Get, Test and Set operations, detecting configuration drift
- The generations at a glance: PowerShell DSC 1.1 in Windows PowerShell 5.1 with the Local Configuration Manager and pull server, PSDesiredStateConfiguration 2.0 for PowerShell 7, and Microsoft DSC (v3)
- What is dropped with PowerShell 7: the Local Configuration Manager, pull server and built-in resources (partially replaced via PSDscResources), calling resources with Invoke-DscResource
- Which variant suits which use case
Using Microsoft DSC (v3)
- Installing and calling the dsc command-line tool on Windows, Linux and macOS – with no service and no dependency on PowerShell
- Finding resources and calling them individually: dsc resource list, get, test and set
- Configuration documents in YAML or JSON: resource instances, parameters, variables, metadata and expression functions
- Dependencies with dependsOn and resourceId(), assertions as preconditions
- Querying, testing, enforcing and exporting configurations: dsc config get, test, set (also with –what-if) and export
- Processing output further as JSON or YAML, using log levels and exit codes for troubleshooting
Developing Resources with PowerShell
- Writing class-based DSC resources in PowerShell: key properties as well as the Get, Test and Set methods
- Continuing to use existing PowerShell DSC resources via the Microsoft DSC adapter resources
- Overview of command-based resources with a resource manifest in any language
- Testing resource modules and providing them via the PowerShell Gallery or an internal repository
Deployment Scenarios and Migration
- Setting up workstations and development environments with WinGet Configuration and winget configure
- Azure Machine Configuration for Azure VMs and servers with Azure Arc: creating and testing packages with the GuestConfiguration module and assigning them via Azure Policy
- Azure Automation State Configuration is being retired on 30 September 2027: planning migration to Azure Machine Configuration
- Assessing existing DSC 1.1 configurations and integrating version-controlled configurations into CI/CD pipelines