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
Accept configuration agreements without prompting. Required for non-interactive execution. Pipeline Input: true (by property name)
Outputs
PSApplyConfigurationSetResult
The result of applying the configuration set. The result code of the operation. 0 indicates success.
UnitResults
PSApplyConfigurationUnitResult[]
Array of results for each configuration unit.
Whether the configuration was applied successfully.
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