8.8 KiB
description, ms.date, ms.topic, title
| description | ms.date | ms.topic | title |
|---|---|---|---|
| Overview of PowerToys Desired State Configuration (DSC) support | 10/18/2025 | overview | PowerToys DSC Overview |
PowerToys DSC Overview
Synopsis
PowerToys supports Desired State Configuration (DSC) v3 for declarative configuration management of PowerToys settings.
Description
PowerToys includes Microsoft Desired State Configuration (DSC) support
through the PowerToys.DSC.exe command-line tool, enabling you to:
- Declare and enforce desired configuration states for PowerToys utilities.
- Automate PowerToys configuration across multiple systems.
- Integrate PowerToys configuration with WinGet and other DSC-compatible tools.
- Version control your PowerToys settings as code.
The PowerToys DSC implementation provides a settings resource that manages configuration for all PowerToys utilities (modules). Each utility can be configured independently, allowing granular control over your PowerToys environment.
Usage methods
PowerToys DSC can be used in three ways:
1. Direct execution with PowerToys.DSC.exe
Execute DSC operations directly using the PowerToys.DSC.exe command-line tool:
# Get current settings for a module
PowerToys.DSC.exe get --resource 'settings' --module Awake
# Set settings for a module
$input = '{"settings":{...}}'
PowerToys.DSC.exe set --resource 'settings' --module Awake --input $input
# Test if settings match desired state
PowerToys.DSC.exe test --resource 'settings' --module Awake --input $input
For detailed information, see PowerToys.DSC.exe command reference.
2. Microsoft Desired State Configuration (DSC)
Use PowerToys DSC resources in standard DSC configuration documents:
# powertoys-config.dsc.yaml
$schema: https://aka.ms/dsc/schemas/v3/bundled/config/document.json
resources:
- name: Configure Awake
type: Microsoft.PowerToys/AwakeSettings
properties:
settings:
properties:
keepDisplayOn: true
mode: 1
name: Awake
version: 0.0.1
3. WinGet Configuration
Integrate PowerToys configuration with WinGet package installation:
# winget-powertoys.yaml
$schema: https://raw.githubusercontent.com/PowerShell/DSC/main/schemas/2023/08/config/document.json
metadata:
winget:
processor: dscv3
resources:
- name: Install PowerToys
type: Microsoft.WinGet.DSC/WinGetPackage
properties:
id: Microsoft.PowerToys
source: winget
- name: Configure FancyZones
type: Microsoft.PowerToys/FancyZonesSettings
properties:
settings:
properties:
fancyzones_shiftDrag: true
fancyzones_mouseSwitch: true
name: FancyZones
version: 1.0
Available resources
PowerToys DSC provides the following resource:
| Resource | Description |
|---|---|
settings |
Manages configuration for PowerToys utility modules. |
For detailed information about the settings resource, see Settings Resource Reference.
Available modules
The settings resource supports configuration for the following PowerToys utilities:
| Module | Description | Documentation |
|---|---|---|
| App | General PowerToys application settings. | App module |
| AdvancedPaste | Advanced clipboard operations. | AdvancedPaste module |
| AlwaysOnTop | Pin windows to stay on top. | AlwaysOnTop module |
| Awake | Keep computer awake. | Awake module |
| ColorPicker | System-wide color picker utility. | ColorPicker module |
| CropAndLock | Crop and lock portions of windows. | CropAndLock module |
| EnvironmentVariables | Manage environment variables. | EnvironmentVariables module |
| FancyZones | Window layout manager. | FancyZones module |
| FileLocksmith | Identify what's locking files. | FileLocksmith module |
| FindMyMouse | Locate your mouse cursor. | FindMyMouse module |
| Hosts | Quick hosts file editor. | Hosts module |
| ImageResizer | Resize images from context menu. | ImageResizer module |
| KeyboardManager | Remap keys and create shortcuts. | KeyboardManager module |
| MeasureTool | Measure pixels on screen. | MeasureTool module |
| MouseHighlighter | Highlight mouse cursor. | MouseHighlighter module |
| MouseJump | Jump across large or multiple displays. | MouseJump module |
| MousePointerCrosshairs | Display crosshairs centered on mouse. | MousePointerCrosshairs module |
| Peek | Quick file previewer. | Peek module |
| PowerAccent | Quick accent character selector. | PowerAccent module |
| PowerOCR | Extract text from images. | PowerOCR module |
| PowerRename | Bulk rename files. | PowerRename module |
| RegistryPreview | Visualize and edit registry files. | RegistryPreview module |
| ShortcutGuide | Display keyboard shortcuts. | ShortcutGuide module |
| Workspaces | Save and restore application sets. | Workspaces module |
| ZoomIt | Screen zoom and annotation tool. | ZoomIt module |
Common operations
List all supported modules
PowerToys.DSC.exe modules --resource 'settings'
Get current configuration
# Get configuration for a specific module.
PowerToys.DSC.exe get --resource 'settings' --module FancyZones
# Export configuration (identical to get).
PowerToys.DSC.exe export --resource 'settings' --module FancyZones
Apply configuration
# Set configuration for a module.
$input = '{"settings":{...}}'
PowerToys.DSC.exe set --resource 'settings' --module FancyZones --input $input
Validate configuration
# Test if current state matches desired state.
$input = '{"settings":{...}}'
PowerToys.DSC.exe test --resource 'settings' --module FancyZones --input $input
Generate schema
# Get JSON schema for a module's settings.
PowerToys.DSC.exe schema --resource 'settings' --module FancyZones
Generate DSC manifest
# Generate manifest for a specific module.
$outputDir = "C:\manifests"
PowerToys.DSC.exe manifest --resource 'settings' --module FancyZones `
--outputDir $outputDir
# Generate manifests for all modules.
PowerToys.DSC.exe manifest --resource 'settings' --outputDir $outputDir
Examples
For complete examples, see:
- Settings Resource Examples
- Individual module documentation in the modules folder