Skip to main content
Applies a configuration set and waits for completion.

Syntax

Invoke-WinGetConfiguration
    -Set <PSConfigurationSet>
    [-AcceptConfigurationAgreements]
    [<CommonParameters>]

Description

The Invoke-WinGetConfiguration cmdlet applies a configuration set to the system. The cmdlet processes all configuration units defined in the set, installing packages, configuring settings, and executing other DSC resources. It waits for the operation to complete before returning the results.

Parameters

Set
PSConfigurationSet
required
The configuration set to apply. This parameter accepts pipeline input from Get-WinGetConfiguration.Pipeline Input: true
Position: 0
Required: true
AcceptConfigurationAgreements
switch
Accept configuration agreements without prompting. Required for non-interactive execution.Pipeline Input: true (by property name)

Outputs

PSApplyConfigurationSetResult
object
The result of applying the configuration set.

Examples

Example 1: Load and Apply Configuration

$config = Get-WinGetConfiguration -File "C:\config\setup.yaml"
Invoke-WinGetConfiguration -Set $config -AcceptConfigurationAgreements
Loads a configuration file and applies it to the system.

Example 2: Apply from Pipeline

Get-WinGetConfiguration -File "setup.yaml" | Invoke-WinGetConfiguration -AcceptConfigurationAgreements
Loads and applies configuration via the pipeline.

Example 3: Apply with Error Handling

try {
    $config = Get-WinGetConfiguration -File "setup.yaml"
    $result = Invoke-WinGetConfiguration -Set $config -AcceptConfigurationAgreements -ErrorAction Stop
    
    if ($result.Succeeded) {
        Write-Host "Configuration applied successfully"
    } else {
        Write-Warning "Configuration completed with errors"
    }
}
catch {
    Write-Error "Failed to apply configuration: $_"
}
Applies configuration with comprehensive error handling.

Example 4: Apply Configuration from History

$config = Get-WinGetConfiguration -InstanceIdentifier "12345678-1234-1234-1234-123456789012"
Invoke-WinGetConfiguration -Set $config -AcceptConfigurationAgreements
Reapplies a configuration from history.

Example 5: Review Then Apply

$config = Get-WinGetConfiguration -File "setup.yaml"
Get-WinGetConfigurationDetails -Set $config

$confirmation = Read-Host "Apply this configuration? (y/n)"
if ($confirmation -eq 'y') {
    Invoke-WinGetConfiguration -Set $config -AcceptConfigurationAgreements
}
Reviews configuration details before applying.

Example 6: Apply Multiple Configurations

$configFiles = @("base.yaml", "dev-tools.yaml", "settings.yaml")

foreach ($file in $configFiles) {
    Write-Host "Applying $file..."
    $config = Get-WinGetConfiguration -File $file
    Invoke-WinGetConfiguration -Set $config -AcceptConfigurationAgreements
}
Applies multiple configuration files in sequence.

Example 7: Apply with Progress Tracking

$config = Get-WinGetConfiguration -File "setup.yaml"

Write-Host "Starting configuration application..."
$result = Invoke-WinGetConfiguration -Set $config -AcceptConfigurationAgreements -Verbose

Write-Host "Configuration complete. Result code: $($result.ResultCode)"
Write-Host "Units processed: $($result.UnitResults.Count)"
Applies configuration with verbose output for progress tracking.

Example 8: Conditional Application

$config = Get-WinGetConfiguration -File "setup.yaml"

if ($env:COMPUTERNAME -like "DEV-*") {
    Write-Host "Development machine detected, applying dev configuration"
    Invoke-WinGetConfiguration -Set $config -AcceptConfigurationAgreements
} else {
    Write-Host "Skipping configuration on non-dev machine"
}
Applies configuration based on conditions.

Notes

  • Alias: iwgc
  • The cmdlet waits for the configuration to complete before returning
  • Use -AcceptConfigurationAgreements for non-interactive execution
  • Configuration progress is displayed during execution
  • The cmdlet can be interrupted with Ctrl+C
  • Use -Verbose to see detailed progress information

Build docs developers (and LLMs) love