2023-05-09 13:14:27 -05:00
|
|
|
Function Invoke-WinUtilCurrentSystem {
|
|
|
|
|
|
|
|
<#
|
|
|
|
|
2023-10-19 17:12:55 -05:00
|
|
|
.SYNOPSIS
|
|
|
|
Checks to see what tweaks have already been applied and what programs are installed, and checks the according boxes
|
2023-05-09 13:14:27 -05:00
|
|
|
|
2023-10-19 17:12:55 -05:00
|
|
|
.EXAMPLE
|
2023-05-09 13:14:27 -05:00
|
|
|
Get-WinUtilCheckBoxes "WPFInstall"
|
|
|
|
|
|
|
|
#>
|
|
|
|
|
|
|
|
param(
|
|
|
|
$CheckBox
|
|
|
|
)
|
2024-09-10 13:02:22 -05:00
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-05-09 13:14:27 -05:00
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
if ($checkbox -eq "winget") {
|
2023-05-09 13:14:27 -05:00
|
|
|
|
|
|
|
$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 {
|
2023-09-13 17:30:56 -05:00
|
|
|
$dependencies = @($sync.configs.applications.$($psitem.Key).winget -split ";")
|
2023-07-13 15:46:00 -05:00
|
|
|
|
2023-09-13 17:30:56 -05:00
|
|
|
if ($dependencies[-1] -in $sync.InstalledPrograms.Id) {
|
|
|
|
Write-Output $psitem.name
|
2023-05-09 13:14:27 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
if($CheckBox -eq "tweaks") {
|
2023-05-09 13:14:27 -05:00
|
|
|
|
2024-12-05 21:24:36 -06:00
|
|
|
if(!(Test-Path 'HKU:\')) {$null = (New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS)}
|
2023-05-09 13:14:27 -05:00
|
|
|
$ScheduledTasks = Get-ScheduledTask
|
|
|
|
|
|
|
|
$sync.configs.tweaks | Get-Member -MemberType NoteProperty | ForEach-Object {
|
|
|
|
|
|
|
|
$Config = $psitem.Name
|
|
|
|
#WPFEssTweaksTele
|
|
|
|
$registryKeys = $sync.configs.tweaks.$Config.registry
|
|
|
|
$scheduledtaskKeys = $sync.configs.tweaks.$Config.scheduledtask
|
|
|
|
$serviceKeys = $sync.configs.tweaks.$Config.service
|
2023-10-19 17:12:55 -05:00
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
if($registryKeys -or $scheduledtaskKeys -or $serviceKeys) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$Values = @()
|
|
|
|
|
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
Foreach ($tweaks in $registryKeys) {
|
|
|
|
Foreach($tweak in $tweaks) {
|
2023-10-19 17:12:55 -05:00
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
if(test-path $tweak.Path) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$actualValue = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name)
|
|
|
|
$expectedValue = $tweak.Value
|
2024-08-06 15:35:17 -05:00
|
|
|
if ($expectedValue -notlike $actualValue) {
|
2023-10-19 17:12:55 -05:00
|
|
|
$values += $False
|
2023-05-09 13:14:27 -05:00
|
|
|
}
|
2024-08-06 15:35:17 -05:00
|
|
|
} else {
|
2024-07-08 15:11:39 -05:00
|
|
|
$values += $False
|
|
|
|
}
|
2023-05-09 13:14:27 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
Foreach ($tweaks in $scheduledtaskKeys) {
|
|
|
|
Foreach($tweak in $tweaks) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$task = $ScheduledTasks | Where-Object {$($psitem.TaskPath + $psitem.TaskName) -like "\$($tweak.name)"}
|
2023-10-19 17:12:55 -05:00
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
if($task) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$actualValue = $task.State
|
|
|
|
$expectedValue = $tweak.State
|
2024-08-06 15:35:17 -05:00
|
|
|
if ($expectedValue -ne $actualValue) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$values += $False
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
Foreach ($tweaks in $serviceKeys) {
|
|
|
|
Foreach($tweak in $tweaks) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$Service = Get-Service -Name $tweak.Name
|
2023-10-19 17:12:55 -05:00
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
if($Service) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$actualValue = $Service.StartType
|
|
|
|
$expectedValue = $tweak.StartupType
|
2024-08-06 15:35:17 -05:00
|
|
|
if ($expectedValue -ne $actualValue) {
|
2023-05-09 13:14:27 -05:00
|
|
|
$values += $False
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-06 15:35:17 -05:00
|
|
|
if($values -notcontains $false) {
|
2023-05-09 13:14:27 -05:00
|
|
|
Write-Output $Config
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|