Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
PowerToys supports two Desired State Configuration (DSC) approaches for automating and managing PowerToys settings across Windows systems. Each approach serves different use cases and is designed for specific workflows.
Understanding DSC in PowerToys
Desired State Configuration enables you to define, deploy, and enforce configuration settings declaratively. Instead of writing scripts that perform configuration steps, you describe the desired end state, and DSC ensures the system matches that state.
PowerToys offers two distinct DSC implementations:
- PowerShell DSC (PSDSC) - A legacy PowerShell-based module using DSC v2
- Microsoft DSC - A modern, cross-platform implementation using DSC v3
Note
These are two separate implementations with different capabilities, syntaxes, and use cases. Choose the approach that best fits your infrastructure and requirements.
Choosing the right approach
Use PowerShell DSC when
- You have existing PowerShell DSC infrastructure and workflows.
- You're using PowerShell 7.4 or higher with PSDesiredStateConfiguration 2.0.7+.
- You prefer PowerShell-based configuration management.
Available since: PowerToys v0.80.0
Use Microsoft DSC when
- You need standalone PowerToys configuration without PowerShell dependencies.
- You're adopting Microsoft DSC standards and tooling.
- You want direct command-line configuration with
PowerToys.DSC.exe. - You need JSON schema validation and manifest generation.
- You're building automation with the latest Microsoft DSC ecosystem.
Available since: PowerToys v0.95.0
Key differences
| Feature | PowerShell DSC | Microsoft DSC |
|---|---|---|
| DSC Version | v2 | v3 |
| Prerequisites | PowerShell 7.2+, PSDesiredStateConfiguration 2.0.7+ | None (standalone) |
| Module Name | Microsoft.PowerToys.Configure |
Resource types under Microsoft.PowerToys/ |
| Command-line tool | PowerShell cmdlets | PowerToys.DSC.exe |
| Configuration format | YAML (WinGet configuration) | YAML (Microsoft DSC configuration documents), JSON or Bicep JSON |
| Resource model | Single PowerToysConfigure resource |
Individual resources per module (e.g., AwakeSettings) |
| Platform support | Windows only | Cross-platform ready |
| Schema support | Limited | Full JSON schema generation |
| Manifest generation | No | Yes |
Important
While Microsoft DSC is cross-platform ready and can run on Windows, Linux, and macOS, PowerToys itself is a Windows-only application. The Microsoft DSC implementation provides a modern, cross-platform architecture that aligns with the broader DSC v3 ecosystem, but PowerToys configuration can only be applied on Windows systems where PowerToys is installed.
Configuration scope
Both approaches support configuring all PowerToys utilities:
- General application settings (startup, theme, updates)
- Always On Top
- Awake
- Color Picker
- Crop And Lock
- Environment Variables
- FancyZones
- File Locksmith
- Find My Mouse
- Hosts File Editor
- Image Resizer
- Keyboard Manager
- Mouse Highlighter
- Mouse Jump
- Mouse Pointer Crosshairs
- Mouse Without Borders
- Peek
- PowerToys Run (PowerLauncher)
- Quick Accent (PowerAccent)
- Registry Preview
- Screen Ruler (MeasureTool)
- Shortcut Guide
- Text Extractor (PowerOCR)
- Video Conference Mute
- Workspaces
Next steps
Choose your DSC approach and get started:
- Configure with PowerShell DSC - Learn about the PowerShell-based DSC module and WinGet configuration integration
- Configure with Microsoft DSC - Explore the modern Microsoft DSC implementation with PowerToys.DSC.exe
See also
Windows developer