Back to Powertoys

PowerToys DSC Overview

doc/dsc/overview.md

0.99.18.6 KB
Original Source

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:

powershell
# 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:

yaml
# 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:

yaml
# 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:

ResourceDescription
settingsManages 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:

ModuleDescriptionDocumentation
AppGeneral PowerToys application settings.App module
AdvancedPasteAdvanced clipboard operations.AdvancedPaste module
AlwaysOnTopPin windows to stay on top.AlwaysOnTop module
AwakeKeep computer awake.Awake module
ColorPickerSystem-wide color picker utility.ColorPicker module
CropAndLockCrop and lock portions of windows.CropAndLock module
EnvironmentVariablesManage environment variables.EnvironmentVariables module
FancyZonesWindow layout manager.FancyZones module
FileLocksmithIdentify what's locking files.FileLocksmith module
FindMyMouseLocate your mouse cursor.FindMyMouse module
HostsQuick hosts file editor.Hosts module
ImageResizerResize images from context menu.ImageResizer module
KeyboardManagerRemap keys and create shortcuts.KeyboardManager module
MeasureToolMeasure pixels on screen.MeasureTool module
MouseHighlighterHighlight mouse cursor.MouseHighlighter module
MouseJumpJump across large or multiple displays.MouseJump module
MousePointerCrosshairsDisplay crosshairs centered on mouse.MousePointerCrosshairs module
PeekQuick file previewer.Peek module
PowerAccentQuick accent character selector.PowerAccent module
PowerOCRExtract text from images.PowerOCR module
PowerRenameBulk rename files.PowerRename module
RegistryPreviewVisualize and edit registry files.RegistryPreview module
ShortcutGuideDisplay keyboard shortcuts.ShortcutGuide module
WorkspacesSave and restore application sets.Workspaces module
ZoomItScreen zoom and annotation tool.ZoomIt module

Common operations

List all supported modules

powershell
PowerToys.DSC.exe modules --resource 'settings'

Get current configuration

powershell
# 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

powershell
# Set configuration for a module.
$input = '{"settings":{...}}'
PowerToys.DSC.exe set --resource 'settings' --module FancyZones --input $input

Validate configuration

powershell
# Test if current state matches desired state.
$input = '{"settings":{...}}'
PowerToys.DSC.exe test --resource 'settings' --module FancyZones --input $input

Generate schema

powershell
# Get JSON schema for a module's settings.
PowerToys.DSC.exe schema --resource 'settings' --module FancyZones

Generate DSC manifest

powershell
# 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

<!-- Link reference definitions -->