Added logging

Changed global to script variables
This commit is contained in:
Raphire
2025-05-10 13:02:48 +02:00
parent 76d5b83ac1
commit aa54564c97
4 changed files with 65 additions and 52 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
LastSettings LastSettings
SavedSettings SavedSettings
CustomAppsList CustomAppsList
Win11Debloat.log

View File

@@ -2,6 +2,7 @@ param (
[switch]$Silent, [switch]$Silent,
[switch]$Verbose, [switch]$Verbose,
[switch]$Sysprep, [switch]$Sysprep,
[string]$LogPath,
[string]$User, [string]$User,
[switch]$CreateRestorePoint, [switch]$CreateRestorePoint,
[switch]$RunAppsListGenerator, [switch]$RunAppConfigurator, [switch]$RunAppsListGenerator, [switch]$RunAppConfigurator,
@@ -76,7 +77,7 @@ Invoke-WebRequest http://github.com/raphire/win11debloat/archive/master.zip -Out
if (Test-Path "$env:TEMP/Win11Debloat/Win11Debloat-master") { if (Test-Path "$env:TEMP/Win11Debloat/Win11Debloat-master") {
Write-Output "" Write-Output ""
Write-Output "> Cleaning up old Win11Debloat folder..." Write-Output "> Cleaning up old Win11Debloat folder..."
Get-ChildItem -Path "$env:TEMP/Win11Debloat/Win11Debloat-master" -Exclude CustomAppsList,SavedSettings | Remove-Item -Recurse -Force Get-ChildItem -Path "$env:TEMP/Win11Debloat/Win11Debloat-master" -Exclude CustomAppsList,SavedSettings,Win11Debloat.log | Remove-Item -Recurse -Force
} }
Write-Output "" Write-Output ""
@@ -115,7 +116,7 @@ if (Test-Path "$env:TEMP/Win11Debloat/Win11Debloat-master") {
Write-Output "> Cleaning up..." Write-Output "> Cleaning up..."
# Cleanup, remove Win11Debloat directory # Cleanup, remove Win11Debloat directory
Get-ChildItem -Path "$env:TEMP/Win11Debloat/Win11Debloat-master" -Exclude CustomAppsList,SavedSettings | Remove-Item -Recurse -Force Get-ChildItem -Path "$env:TEMP/Win11Debloat/Win11Debloat-master" -Exclude CustomAppsList,SavedSettings,Win11Debloat.log | Remove-Item -Recurse -Force
} }
Write-Output "" Write-Output ""

View File

@@ -342,6 +342,7 @@ The quick and advanced usage methods support switch parameters. A table of all t
| -CreateRestorePoint | Create a system restore point before making any changes. Unless a restore point was already created in the last 24 hours. | | -CreateRestorePoint | Create a system restore point before making any changes. Unless a restore point was already created in the last 24 hours. |
| -Silent | Suppresses all interactive prompts, so the script will run without requiring any user input. | | -Silent | Suppresses all interactive prompts, so the script will run without requiring any user input. |
| -Sysprep | Run the script in Sysprep mode. All changes will be applied to the Windows default user profile and will only affect new user accounts. | | -Sysprep | Run the script in Sysprep mode. All changes will be applied to the Windows default user profile and will only affect new user accounts. |
| -LogPath | Specify where Win11Debloat will create the log file, always called `Win11Debloat.log`. The log will be saved to the root folder of the script if the specified path doesn't exist. |
| -User `<USERNAME>` | Run the script for the specified user, instead of the currently logged in user. This user must have logged on atleast once, and cannot be logged in at the time the script is run. | | -User `<USERNAME>` | Run the script for the specified user, instead of the currently logged in user. This user must have logged on atleast once, and cannot be logged in at the time the script is run. |
| -RunDefaults | Run the script with the default settings. | | -RunDefaults | Run the script with the default settings. |
| -RunSavedSettings | Run the script with the saved custom settings from last time. These settings are saved to and read from the `SavedSettings` file in the root folder of the script. | | -RunSavedSettings | Run the script with the saved custom settings from last time. These settings are saved to and read from the `SavedSettings` file in the root folder of the script. |

View File

@@ -4,6 +4,7 @@
param ( param (
[switch]$Silent, [switch]$Silent,
[switch]$Sysprep, [switch]$Sysprep,
[string]$LogPath,
[string]$User, [string]$User,
[switch]$CreateRestorePoint, [switch]$CreateRestorePoint,
[switch]$RunAppsListGenerator, [switch]$RunAppConfigurator, [switch]$RunAppsListGenerator, [switch]$RunAppConfigurator,
@@ -65,6 +66,13 @@ if ($ExecutionContext.SessionState.LanguageMode -ne "FullLanguage") {
Exit Exit
} }
# Log script output to 'Win11Debloat.log' at the specified path
if($LogPath -and (Test-Path $LogPath)) {
Start-Transcript -Path "$LogPath/Win11Debloat.log" -Append -IncludeInvocationHeader -Force | Out-Null
}
else {
Start-Transcript -Path "$PSScriptRoot/Win11Debloat.log" -Append -IncludeInvocationHeader -Force | Out-Null
}
# Shows application selection form that allows the user to select what apps they want to remove or keep # Shows application selection form that allows the user to select what apps they want to remove or keep
function ShowAppSelectionForm { function ShowAppSelectionForm {
@@ -82,7 +90,7 @@ function ShowAppSelectionForm {
$checkUncheckCheckBox = New-Object System.Windows.Forms.CheckBox $checkUncheckCheckBox = New-Object System.Windows.Forms.CheckBox
$initialFormWindowState = New-Object System.Windows.Forms.FormWindowState $initialFormWindowState = New-Object System.Windows.Forms.FormWindowState
$global:selectionBoxIndex = -1 $script:selectionBoxIndex = -1
# saveButton eventHandler # saveButton eventHandler
$handler_saveButton_Click= $handler_saveButton_Click=
@@ -95,14 +103,14 @@ function ShowAppSelectionForm {
} }
} }
$global:SelectedApps = $selectionBox.CheckedItems $script:SelectedApps = $selectionBox.CheckedItems
# Create file that stores selected apps if it doesn't exist # Create file that stores selected apps if it doesn't exist
if (-not (Test-Path "$PSScriptRoot/CustomAppsList")) { if (-not (Test-Path "$PSScriptRoot/CustomAppsList")) {
$null = New-Item "$PSScriptRoot/CustomAppsList" $null = New-Item "$PSScriptRoot/CustomAppsList"
} }
Set-Content -Path "$PSScriptRoot/CustomAppsList" -Value $global:SelectedApps Set-Content -Path "$PSScriptRoot/CustomAppsList" -Value $script:SelectedApps
$form.DialogResult = [System.Windows.Forms.DialogResult]::OK $form.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.Close() $form.Close()
@@ -116,15 +124,15 @@ function ShowAppSelectionForm {
$selectionBox_SelectedIndexChanged= $selectionBox_SelectedIndexChanged=
{ {
$global:selectionBoxIndex = $selectionBox.SelectedIndex $script:selectionBoxIndex = $selectionBox.SelectedIndex
} }
$selectionBox_MouseDown= $selectionBox_MouseDown=
{ {
if ($_.Button -eq [System.Windows.Forms.MouseButtons]::Left) { if ($_.Button -eq [System.Windows.Forms.MouseButtons]::Left) {
if ([System.Windows.Forms.Control]::ModifierKeys -eq [System.Windows.Forms.Keys]::Shift) { if ([System.Windows.Forms.Control]::ModifierKeys -eq [System.Windows.Forms.Keys]::Shift) {
if ($global:selectionBoxIndex -ne -1) { if ($script:selectionBoxIndex -ne -1) {
$topIndex = $global:selectionBoxIndex $topIndex = $script:selectionBoxIndex
if ($selectionBox.SelectedIndex -gt $topIndex) { if ($selectionBox.SelectedIndex -gt $topIndex) {
for (($i = ($topIndex)); $i -le $selectionBox.SelectedIndex; $i++){ for (($i = ($topIndex)); $i -le $selectionBox.SelectedIndex; $i++){
@@ -138,7 +146,7 @@ function ShowAppSelectionForm {
} }
} }
} }
elseif ($global:selectionBoxIndex -ne $selectionBox.SelectedIndex) { elseif ($script:selectionBoxIndex -ne $selectionBox.SelectedIndex) {
$selectionBox.SetItemChecked($selectionBox.SelectedIndex, -not $selectionBox.GetItemChecked($selectionBox.SelectedIndex)) $selectionBox.SetItemChecked($selectionBox.SelectedIndex, -not $selectionBox.GetItemChecked($selectionBox.SelectedIndex))
} }
} }
@@ -157,7 +165,7 @@ function ShowAppSelectionForm {
$form.WindowState = $initialFormWindowState $form.WindowState = $initialFormWindowState
# Reset state to default before loading appslist again # Reset state to default before loading appslist again
$global:selectionBoxIndex = -1 $script:selectionBoxIndex = -1
$checkUncheckCheckBox.Checked = $False $checkUncheckCheckBox.Checked = $False
# Show loading indicator # Show loading indicator
@@ -171,7 +179,7 @@ function ShowAppSelectionForm {
$appsFile = "$PSScriptRoot/Appslist.txt" $appsFile = "$PSScriptRoot/Appslist.txt"
$listOfApps = "" $listOfApps = ""
if ($onlyInstalledCheckBox.Checked -and ($global:wingetInstalled -eq $true)) { if ($onlyInstalledCheckBox.Checked -and ($script:wingetInstalled -eq $true)) {
# Attempt to get a list of installed apps via winget, times out after 10 seconds # Attempt to get a list of installed apps via winget, times out after 10 seconds
$job = Start-Job { return winget list --accept-source-agreements --disable-interactivity } $job = Start-Job { return winget list --accept-source-agreements --disable-interactivity }
$jobDone = $job | Wait-Job -TimeOut 10 $jobDone = $job | Wait-Job -TimeOut 10
@@ -354,7 +362,7 @@ function RemoveApps {
if (($app -eq "Microsoft.OneDrive") -or ($app -eq "Microsoft.Edge")) { if (($app -eq "Microsoft.OneDrive") -or ($app -eq "Microsoft.Edge")) {
# Use winget to remove OneDrive and Edge # Use winget to remove OneDrive and Edge
if ($global:wingetInstalled -eq $false) { if ($script:wingetInstalled -eq $false) {
Write-Host "Error: WinGet is either not installed or is outdated, $app could not be removed" -ForegroundColor Red Write-Host "Error: WinGet is either not installed or is outdated, $app could not be removed" -ForegroundColor Red
} }
else { else {
@@ -532,15 +540,15 @@ function RegImport {
Write-Output $message Write-Output $message
if ($global:Params.ContainsKey("Sysprep")) { if ($script:Params.ContainsKey("Sysprep")) {
$defaultUserPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), '\Default\NTUSER.DAT' $defaultUserPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), '\Default\NTUSER.DAT'
reg load "HKU\Default" $defaultUserPath | Out-Null reg load "HKU\Default" $defaultUserPath | Out-Null
reg import "$PSScriptRoot\Regfiles\Sysprep\$path" reg import "$PSScriptRoot\Regfiles\Sysprep\$path"
reg unload "HKU\Default" | Out-Null reg unload "HKU\Default" | Out-Null
} }
elseif ($global:Params.ContainsKey("User")) { elseif ($script:Params.ContainsKey("User")) {
$userPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), "\$($global:Params.Item("User"))\NTUSER.DAT" $userPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), "\$($script:Params.Item("User"))\NTUSER.DAT"
reg load "HKU\Default" $userPath | Out-Null reg load "HKU\Default" $userPath | Out-Null
reg import "$PSScriptRoot\Regfiles\Sysprep\$path" reg import "$PSScriptRoot\Regfiles\Sysprep\$path"
@@ -557,17 +565,17 @@ function RegImport {
# Restart the Windows Explorer process # Restart the Windows Explorer process
function RestartExplorer { function RestartExplorer {
if ($global:Params.ContainsKey("Sysprep") -or $global:Params.ContainsKey("User")) { if ($script:Params.ContainsKey("Sysprep") -or $script:Params.ContainsKey("User")) {
return return
} }
Write-Output "> Restarting Windows Explorer process to apply all changes... (This may cause some flickering)" Write-Output "> Restarting Windows Explorer process to apply all changes... (This may cause some flickering)"
if ($global:Params.ContainsKey("DisableMouseAcceleration")) { if ($script:Params.ContainsKey("DisableMouseAcceleration")) {
Write-Host "Warning: The Enhance Pointer Precision setting changes will only take effect after a reboot" -ForegroundColor Yellow Write-Host "Warning: The Enhance Pointer Precision setting changes will only take effect after a reboot" -ForegroundColor Yellow
} }
if ($global:Params.ContainsKey("DisableStickyKeys")) { if ($script:Params.ContainsKey("DisableStickyKeys")) {
Write-Host "Warning: The Sticky Keys setting changes will only take effect after a reboot" -ForegroundColor Yellow Write-Host "Warning: The Sticky Keys setting changes will only take effect after a reboot" -ForegroundColor Yellow
} }
@@ -632,7 +640,7 @@ function ReplaceStartMenu {
) )
# Change path to correct user if a user was specified # Change path to correct user if a user was specified
if ($global:Params.ContainsKey("User")) { if ($script:Params.ContainsKey("User")) {
$startMenuBinFile = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), "\$(GetUserName)\AppData\Local\Packages\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\LocalState\start2.bin" $startMenuBinFile = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), "\$(GetUserName)\AppData\Local\Packages\Microsoft.Windows.StartMenuExperienceHost_cw5n1h2txyewy\LocalState\start2.bin"
} }
@@ -668,19 +676,19 @@ function AddParameter {
) )
# Add key if it doesn't already exist # Add key if it doesn't already exist
if (-not $global:Params.ContainsKey($parameterName)) { if (-not $script:Params.ContainsKey($parameterName)) {
$global:Params.Add($parameterName, $true) $script:Params.Add($parameterName, $true)
} }
# Create or clear file that stores last used settings # Create or clear file that stores last used settings
if (-not (Test-Path "$PSScriptRoot/SavedSettings")) { if (-not (Test-Path "$PSScriptRoot/SavedSettings")) {
$null = New-Item "$PSScriptRoot/SavedSettings" $null = New-Item "$PSScriptRoot/SavedSettings"
} }
elseif ($global:FirstSelection) { elseif ($script:FirstSelection) {
$null = Clear-Content "$PSScriptRoot/SavedSettings" $null = Clear-Content "$PSScriptRoot/SavedSettings"
} }
$global:FirstSelection = $false $script:FirstSelection = $false
# Create entry and add it to the file # Create entry and add it to the file
$entry = "$parameterName#- $message" $entry = "$parameterName#- $message"
@@ -695,7 +703,7 @@ function PrintHeader {
$fullTitle = " Win11Debloat Script - $title" $fullTitle = " Win11Debloat Script - $title"
if ($global:Params.ContainsKey("Sysprep")) { if ($script:Params.ContainsKey("Sysprep")) {
$fullTitle = "$fullTitle (Sysprep mode)" $fullTitle = "$fullTitle (Sysprep mode)"
} }
else { else {
@@ -737,8 +745,8 @@ function AwaitKeyToExit {
function GetUserName { function GetUserName {
if ($global:Params.ContainsKey("User")) { if ($script:Params.ContainsKey("User")) {
return $global:Params.Item("User") return $script:Params.Item("User")
} }
return $env:USERNAME return $env:USERNAME
@@ -837,9 +845,9 @@ function DisplayCustomModeOptions {
AddParameter 'DisableDVR' 'Disable Xbox game/screen recording' AddParameter 'DisableDVR' 'Disable Xbox game/screen recording'
} }
'3' { '3' {
Write-Output "You have selected $($global:SelectedApps.Count) apps for removal" Write-Output "You have selected $($script:SelectedApps.Count) apps for removal"
AddParameter 'RemoveAppsCustom' "Remove $($global:SelectedApps.Count) apps:" AddParameter 'RemoveAppsCustom' "Remove $($script:SelectedApps.Count) apps:"
Write-Output "" Write-Output ""
@@ -910,7 +918,7 @@ function DisplayCustomModeOptions {
} }
# Only show option for disabling context menu items for Windows 10 users or if the user opted to restore the Windows 10 context menu # Only show option for disabling context menu items for Windows 10 users or if the user opted to restore the Windows 10 context menu
if ((get-ciminstance -query "select caption from win32_operatingsystem where caption like '%Windows 10%'") -or $global:Params.ContainsKey('RevertContextMenu')){ if ((get-ciminstance -query "select caption from win32_operatingsystem where caption like '%Windows 10%'") -or $script:Params.ContainsKey('RevertContextMenu')){
Write-Output "" Write-Output ""
if ($( Read-Host -Prompt "Do you want to disable any context menu options? (y/n)" ) -eq 'y') { if ($( Read-Host -Prompt "Do you want to disable any context menu options? (y/n)" ) -eq 'y') {
@@ -941,7 +949,7 @@ function DisplayCustomModeOptions {
if ($( Read-Host -Prompt "Do you want to make any changes to the start menu? (y/n)" ) -eq 'y') { if ($( Read-Host -Prompt "Do you want to make any changes to the start menu? (y/n)" ) -eq 'y') {
Write-Output "" Write-Output ""
if ($global:Params.ContainsKey("Sysprep")) { if ($script:Params.ContainsKey("Sysprep")) {
if ($( Read-Host -Prompt "Remove all pinned apps from the start menu for all existing and new users? (y/n)" ) -eq 'y') { if ($( Read-Host -Prompt "Remove all pinned apps from the start menu for all existing and new users? (y/n)" ) -eq 'y') {
AddParameter 'ClearStartAllUsers' 'Remove all pinned apps from the start menu for existing and new users' AddParameter 'ClearStartAllUsers' 'Remove all pinned apps from the start menu for existing and new users'
} }
@@ -1162,10 +1170,10 @@ function DisplayCustomModeOptions {
# Check if winget is installed & if it is, check if the version is at least v1.4 # Check if winget is installed & if it is, check if the version is at least v1.4
if ((Get-AppxPackage -Name "*Microsoft.DesktopAppInstaller*") -and ([int](((winget -v) -replace 'v','').split('.')[0..1] -join '') -gt 14)) { if ((Get-AppxPackage -Name "*Microsoft.DesktopAppInstaller*") -and ([int](((winget -v) -replace 'v','').split('.')[0..1] -join '') -gt 14)) {
$global:wingetInstalled = $true $script:wingetInstalled = $true
} }
else { else {
$global:wingetInstalled = $false $script:wingetInstalled = $false
# Show warning that requires user confirmation, Suppress confirmation if Silent parameter was passed # Show warning that requires user confirmation, Suppress confirmation if Silent parameter was passed
if (-not $Silent) { if (-not $Silent) {
@@ -1179,21 +1187,21 @@ else {
# Get current Windows build version to compare against features # Get current Windows build version to compare against features
$WinVersion = Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' CurrentBuild $WinVersion = Get-ItemPropertyValue 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' CurrentBuild
$global:Params = $PSBoundParameters $script:Params = $PSBoundParameters
$global:FirstSelection = $true $script:FirstSelection = $true
$SPParams = 'WhatIf', 'Confirm', 'Verbose', 'Silent', 'Sysprep', 'Debug', 'User', 'CreateRestorePoint' $SPParams = 'WhatIf', 'Confirm', 'Verbose', 'Silent', 'Sysprep', 'Debug', 'User', 'CreateRestorePoint', 'LogPath'
$SPParamCount = 0 $SPParamCount = 0
# Count how many SPParams exist within Params # Count how many SPParams exist within Params
# This is later used to check if any options were selected # This is later used to check if any options were selected
foreach ($Param in $SPParams) { foreach ($Param in $SPParams) {
if ($global:Params.ContainsKey($Param)) { if ($script:Params.ContainsKey($Param)) {
$SPParamCount++ $SPParamCount++
} }
} }
# Hide progress bars for app removal, as they block Win11Debloat's output # Hide progress bars for app removal, as they block Win11Debloat's output
if (-not ($global:Params.ContainsKey("Verbose"))) { if (-not ($script:Params.ContainsKey("Verbose"))) {
$ProgressPreference = 'SilentlyContinue' $ProgressPreference = 'SilentlyContinue'
} }
else { else {
@@ -1206,7 +1214,7 @@ else {
} }
# Make sure all requirements for Sysprep are met, if Sysprep is enabled # Make sure all requirements for Sysprep are met, if Sysprep is enabled
if ($global:Params.ContainsKey("Sysprep")) { if ($script:Params.ContainsKey("Sysprep")) {
$defaultUserPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), '\Default\NTUSER.DAT' $defaultUserPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), '\Default\NTUSER.DAT'
# Exit script if default user directory or NTUSER.DAT file cannot be found # Exit script if default user directory or NTUSER.DAT file cannot be found
@@ -1224,12 +1232,12 @@ if ($global:Params.ContainsKey("Sysprep")) {
} }
# Make sure all requirements for User mode are met, if User is specified # Make sure all requirements for User mode are met, if User is specified
if ($global:Params.ContainsKey("User")) { if ($script:Params.ContainsKey("User")) {
$userPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), "\$($global:Params.Item("User"))\NTUSER.DAT" $userPath = $env:USERPROFILE -Replace ('\\' + $env:USERNAME + '$'), "\$($script:Params.Item("User"))\NTUSER.DAT"
# Exit script if user directory or NTUSER.DAT file cannot be found # Exit script if user directory or NTUSER.DAT file cannot be found
if (-not (Test-Path "$userPath")) { if (-not (Test-Path "$userPath")) {
Write-Host "Error: Unable to run Win11Debloat for user $($global:Params.Item("User")), cannot find user data at '$userPath'" -ForegroundColor Red Write-Host "Error: Unable to run Win11Debloat for user $($script:Params.Item("User")), cannot find user data at '$userPath'" -ForegroundColor Red
AwaitKeyToExit AwaitKeyToExit
Exit Exit
} }
@@ -1260,7 +1268,7 @@ if ($RunAppConfigurator -or $RunAppsListGenerator) {
} }
# Change script execution based on provided parameters or user input # Change script execution based on provided parameters or user input
if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or $RunSavedSettings -or ($SPParamCount -eq $global:Params.Count)) { if ((-not $script:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or $RunSavedSettings -or ($SPParamCount -eq $script:Params.Count)) {
if ($RunDefaults -or $RunWin11Defaults) { if ($RunDefaults -or $RunWin11Defaults) {
$Mode = '1' $Mode = '1'
} }
@@ -1332,14 +1340,14 @@ if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or $RunS
# Add default parameters if they don't already exist # Add default parameters if they don't already exist
foreach ($ParameterName in $DefaultParameterNames) { foreach ($ParameterName in $DefaultParameterNames) {
if (-not $global:Params.ContainsKey($ParameterName)){ if (-not $script:Params.ContainsKey($ParameterName)){
$global:Params.Add($ParameterName, $true) $script:Params.Add($ParameterName, $true)
} }
} }
# Only add this option for Windows 10 users, if it doesn't already exist # Only add this option for Windows 10 users, if it doesn't already exist
if ((get-ciminstance -query "select caption from win32_operatingsystem where caption like '%Windows 10%'") -and (-not $global:Params.ContainsKey('Hide3dObjects'))) { if ((get-ciminstance -query "select caption from win32_operatingsystem where caption like '%Windows 10%'") -and (-not $script:Params.ContainsKey('Hide3dObjects'))) {
$global:Params.Add('Hide3dObjects', $Hide3dObjects) $script:Params.Add('Hide3dObjects', $Hide3dObjects)
} }
} }
@@ -1355,8 +1363,8 @@ if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or $RunS
$result = ShowAppSelectionForm $result = ShowAppSelectionForm
if ($result -eq [System.Windows.Forms.DialogResult]::OK) { if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
Write-Output "You have selected $($global:SelectedApps.Count) apps for removal" Write-Output "You have selected $($script:SelectedApps.Count) apps for removal"
AddParameter 'RemoveAppsCustom' "Remove $($global:SelectedApps.Count) apps:" AddParameter 'RemoveAppsCustom' "Remove $($script:SelectedApps.Count) apps:"
# Suppress prompt if Silent parameter was passed # Suppress prompt if Silent parameter was passed
if (-not $Silent) { if (-not $Silent) {
@@ -1402,8 +1410,8 @@ if ((-not $global:Params.Count) -or $RunDefaults -or $RunWin11Defaults -or $RunS
Write-Output $line.Substring(($line.IndexOf('#') + 1), ($line.Length - $line.IndexOf('#') - 1)) Write-Output $line.Substring(($line.IndexOf('#') + 1), ($line.Length - $line.IndexOf('#') - 1))
} }
if (-not $global:Params.ContainsKey($parameterName)){ if (-not $script:Params.ContainsKey($parameterName)){
$global:Params.Add($parameterName, $true) $script:Params.Add($parameterName, $true)
} }
} }
} }
@@ -1425,7 +1433,7 @@ else {
# If the number of keys in SPParams equals the number of keys in Params then no modifications/changes were selected # If the number of keys in SPParams equals the number of keys in Params then no modifications/changes were selected
# or added by the user, and the script can exit without making any changes. # or added by the user, and the script can exit without making any changes.
if ($SPParamCount -eq $global:Params.Keys.Count) { if ($SPParamCount -eq $script:Params.Keys.Count) {
Write-Output "The script completed without making any changes." Write-Output "The script completed without making any changes."
AwaitKeyToExit AwaitKeyToExit
@@ -1433,7 +1441,7 @@ if ($SPParamCount -eq $global:Params.Keys.Count) {
} }
# Execute all selected/provided parameters # Execute all selected/provided parameters
switch ($global:Params.Keys) { switch ($script:Params.Keys) {
'CreateRestorePoint' { 'CreateRestorePoint' {
CreateSystemRestorePoint CreateSystemRestorePoint
continue continue
@@ -1667,3 +1675,5 @@ Write-Output ""
Write-Output "Script completed! Please check above for any errors." Write-Output "Script completed! Please check above for any errors."
AwaitKeyToExit AwaitKeyToExit
Stop-Transcript