Function Invoke-WinUtilCurrentSystem { <# .SYNOPSIS Checks to see what tweaks have already been applied and what programs are installed, and checks the according boxes .EXAMPLE InvokeWinUtilCurrentSystem -Checkbox "winget" #> param( $CheckBox ) if ($CheckBox -eq "choco") { $apps = (choco list | Select-String -Pattern "^\S+").Matches.Value $filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"} $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object { $dependencies = @($sync.configs.applications.$($psitem.Key).choco -split ";") if ($dependencies -in $apps) { Write-Output $psitem.name } } } if ($checkbox -eq "winget") { $originalEncoding = [Console]::OutputEncoding [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new() $Sync.InstalledPrograms = winget list -s winget | Select-Object -skip 3 | ConvertFrom-String -PropertyNames "Name", "Id", "Version", "Available" -Delimiter '\s{2,}' [Console]::OutputEncoding = $originalEncoding $filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"} $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object { $dependencies = @($sync.configs.applications.$($psitem.Key).winget -split ";") if ($dependencies[-1] -in $sync.InstalledPrograms.Id) { Write-Output $psitem.name } } } if ($CheckBox -eq "tweaks") { if (!(Test-Path 'HKU:\')) {$null = (New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS)} $ScheduledTasks = Get-ScheduledTask $sync.configs.tweaks | Get-Member -MemberType NoteProperty | ForEach-Object { $Config = $psitem.Name #WPFEssTweaksTele $entry = $sync.configs.tweaks.$Config $registryKeys = $entry.registry $scheduledtaskKeys = $entry.scheduledtask $serviceKeys = $entry.service $appxKeys = $entry.appx $invokeScript = $entry.InvokeScript $entryType = $entry.Type if ($registryKeys -or $scheduledtaskKeys -or $serviceKeys) { $Values = @() if ($entryType -eq "Toggle") { if (-not (Get-WinUtilToggleStatus $Config)) { $values += $False } } else { $registryMatchCount = 0 $registryTotal = 0 Foreach ($tweaks in $registryKeys) { Foreach ($tweak in $tweaks) { $registryTotal++ $regstate = $null if (Test-Path $tweak.Path) { $regstate = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name) } if ($null -eq $regstate) { switch ($tweak.DefaultState) { "true" { $regstate = $tweak.Value } "false" { $regstate = $tweak.OriginalValue } default { $regstate = $tweak.OriginalValue } } } if ($regstate -eq $tweak.Value) { $registryMatchCount++ } } } if ($registryTotal -gt 0 -and $registryMatchCount -ne $registryTotal) { $values += $False } } Foreach ($tweaks in $scheduledtaskKeys) { Foreach ($tweak in $tweaks) { $task = $ScheduledTasks | Where-Object {$($psitem.TaskPath + $psitem.TaskName) -like "\$($tweak.name)"} if ($task) { $actualValue = $task.State $expectedValue = $tweak.State if ($expectedValue -ne $actualValue) { $values += $False } } } } Foreach ($tweaks in $serviceKeys) { Foreach ($tweak in $tweaks) { $Service = Get-Service -Name $tweak.Name if ($Service) { $actualValue = $Service.StartType $expectedValue = $tweak.StartupType if ($expectedValue -ne $actualValue) { $values += $False } } } } if ($values -notcontains $false) { Write-Output $Config } } else { if ($invokeScript -or $appxKeys) { Write-Debug "Skipping $Config in Get Installed: no detectable registry, scheduled task, or service state." } } } } }