Files
wehub-resource-sync 79031da543
Spell checking / Check Spelling (push) Has been cancelled
Spell checking / Update PR (push) Has been cancelled
Publish Dev Docs Website / build (push) Failing after 1s
Publish Dev Docs Website / deploy (push) Has been skipped
Spell checking / Report (Push) (push) Has been cancelled
Spell checking / Report (PR) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:16:02 +08:00

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:

See also