function Invoke-WinUtilFeatureInstall ($CheckBox) { Write-WinUtilLog -Component "Feature" -Message "Applying feature action: $CheckBox" if ($sync.configs.feature.$CheckBox.feature) { foreach ($feature in $sync.configs.feature.$CheckBox.feature) { Write-Host "Installing $feature" Write-WinUtilLog -Component "Feature" -Message "Enabling Windows optional feature: $feature" Enable-WindowsOptionalFeature -Online -FeatureName $feature -All -NoRestart -ErrorAction Stop Write-WinUtilLog -Component "Feature" -Message "Enabled Windows optional feature: $feature" } } if ($sync.configs.feature.$CheckBox.InvokeScript) { foreach ($script in $sync.configs.feature.$CheckBox.InvokeScript) { Write-Host "Running Script for $CheckBox" Write-WinUtilLog -Component "Feature" -Message "Running feature script for: $CheckBox" Invoke-Command -ScriptBlock ([scriptblock]::Create($script)) -ErrorAction Stop Write-WinUtilLog -Component "Feature" -Message "Completed feature script for: $CheckBox" } } Write-WinUtilLog -Component "Feature" -Message "Feature action completed: $CheckBox" }