mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-06-28 00:54:47 -05:00
2023 09 23 test (#1117)
* move restore point to runspace (#1056)
* Add Guilded into Communication Tab (#1059)
* Add Guilded into Communication Tab
* Remove Choco Package due to there is no Chocolatey packages
* : Add ZeroTier One to utilities menu (#1061)
* Update applications.json (#1063)
Update to add [SuperF4 - Stefan Sundin](https://stefansundin.github.io/superf4/), as mentioned in #374 [Choco - SuperF4](https://community.chocolatey.org/packages/superf4) maintained by Xav83. [WinGet - SuperF4](https://winstall.app/apps/StefanSundin.Superf4) SuperF4 and Winget package published by Stefan Sundin.
* Update inputXML.xaml (#1062)
Updated inputXML.xaml to account for addition of the SuperF4 software.
* Added AIMP music player (#1064)
* Add Ventoy (Chocolatey Only Package) & .NET Core Runtime (Winget & Chocolatey) (#1066)
* Tidy up SuperF4 line.
* Tidy up SuperF4 line.
Used spaces instead of tabs.
* Add dotnet 7.0.11 Desktop Runtime
* Undone changes to SuperF4 line
* Addition of Ventoy (chocolatey only) package
* Comment Spacing, Indentation, and Capitalization (#1084)
* Comment Spacing, Indentation, and Capitalization
* Comment Grammar and Spacing
Makes grammar in comments better and more consistent
Adds space before comment and centers word in `Write-Host` commands
* More Grammar and Formatting
* Add some comments
* Populate PlaceHolder comments in functions
Files I found that has issues:
Get-WinUtilRegistry.ps1
Install-WinUtilWinget.ps1
Invoke-WinUtilDarkMode.ps1
Remove-WinUtilAPPX.ps1
Test-WinUtilPackageManager.ps1
Update-WinUtilProgramWinget.ps1
Invoke-WPFUpdatessecurity.ps1
* Tweak a few more comments
* Tweak another write-host statement
* Undo Catch statement adjustment
It's outside of the scope of this pull request
* Trim Trailing Whitespace (#1085)
* Trim Trailing Whitespace
* Revert "Trim Trailing Whitespace"
This reverts commit 0ce32aa2c2
.
* Trim Trailing Whitespace, take 2
* Bug Fixes
- Edge Removal pullback to local
- Formatting fixes
* testing refactor to ps1
* Update winget-install to 3.0.1 (#1086)
* Update tweaks.json (#1087)
Capitalized first letter of "path" --> "Path" keys
* Update edgeremoval.ps1
* Update edgeremoval.ps1
* Update edgeremoval.ps1
add error handling
* Update functions.Tests.ps1
* fix catch error
* add MSI Afterburner (#1097)
* Add GitHub stats
* Remove Application Experience
* Thorium addition
* remove sample submission
* testing
* Ultimate Performance
* Home GPEDIT
* Fix Winget Install on New System
---------
Co-authored-by: DeveloperDurp <developerdurp@durp.info>
Co-authored-by: Justawildwolf <62820836+blusewill@users.noreply.github.com>
Co-authored-by: Tim Stone <github@tsdev.au>
Co-authored-by: Will Barnard <5012445+mrwillbarnz@users.noreply.github.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
Co-authored-by: Carter <60557606+Carterpersall@users.noreply.github.com>
Co-authored-by: Yorai Levi <yorai.email@gmail.com>
Co-authored-by: Saikrishnan K <53394202+K-Saikrishnan@users.noreply.github.com>
This commit is contained in:
@ -2,13 +2,19 @@ Function Get-WinUtilCheckBoxes {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Function is meant to find all checkboxes that are checked on the specific tab and input them into a script.
|
||||
.SYNOPSIS
|
||||
Finds all checkboxes that are checked on the specific tab and inputs them into a script.
|
||||
|
||||
Outputed data will be the names of the checkboxes that were checked
|
||||
.PARAMETER Group
|
||||
The group of checkboxes to check
|
||||
|
||||
.EXAMPLE
|
||||
.PARAMETER unCheck
|
||||
Whether to uncheck the checkboxes that are checked. Defaults to true
|
||||
|
||||
.OUTPUTS
|
||||
A List containing the name of each checked checkbox
|
||||
|
||||
.EXAMPLE
|
||||
Get-WinUtilCheckBoxes "WPFInstall"
|
||||
|
||||
#>
|
||||
@ -32,18 +38,18 @@ Function Get-WinUtilCheckBoxes {
|
||||
if ($uncheck -eq $true){
|
||||
$CheckBox.value.ischecked = $false
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($Group -eq "WPFTweaks"){
|
||||
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Tweaks*"}
|
||||
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
|
||||
Foreach ($CheckBox in $CheckBoxes){
|
||||
if($CheckBox.value.ischecked -eq $true){
|
||||
$Output.Add($Checkbox.Name)
|
||||
|
||||
|
||||
if ($uncheck -eq $true){
|
||||
$CheckBox.value.ischecked = $false
|
||||
}
|
||||
@ -57,7 +63,7 @@ Function Get-WinUtilCheckBoxes {
|
||||
Foreach ($CheckBox in $CheckBoxes){
|
||||
if($CheckBox.value.ischecked -eq $true){
|
||||
$Output.Add($Checkbox.Name)
|
||||
|
||||
|
||||
if ($uncheck -eq $true){
|
||||
$CheckBox.value.ischecked = $false
|
||||
}
|
||||
|
@ -1,9 +1,15 @@
|
||||
function Get-WinUtilInstallerProcess {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Meant to check for running processes and will return a boolean response
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Checks if the given process is running
|
||||
|
||||
.PARAMETER Process
|
||||
The process to check
|
||||
|
||||
.OUTPUTS
|
||||
Boolean - True if the process is running
|
||||
|
||||
#>
|
||||
|
||||
param($Process)
|
||||
|
@ -1,14 +1,13 @@
|
||||
function Get-WinUtilRegistry {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will make all modifications to the registry
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Gets the value of a registry key
|
||||
|
||||
Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
|
||||
|
||||
#>
|
||||
.EXAMPLE
|
||||
Get-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
|
||||
|
||||
#>
|
||||
param (
|
||||
$Name,
|
||||
$Path,
|
||||
@ -16,7 +15,7 @@ function Get-WinUtilRegistry {
|
||||
$Value
|
||||
)
|
||||
|
||||
Try{
|
||||
Try{
|
||||
$syscheckvalue = Get-ItemPropertyValue -Path $Path -Value $Value # Return Value
|
||||
|
||||
}
|
||||
|
@ -1,12 +1,15 @@
|
||||
Function Get-WinUtilToggleStatus {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Meant to pull the registry keys for a toggle switch and returns true or false
|
||||
|
||||
True should mean status is enabled
|
||||
False should mean status is disabled
|
||||
|
||||
.SYNOPSIS
|
||||
Pulls the registry keys for the given toggle switch and checks whether the toggle should be checked or unchecked
|
||||
|
||||
.PARAMETER ToggleSwitch
|
||||
The name of the toggle to check
|
||||
|
||||
.OUTPUTS
|
||||
Boolean to set the toggle's status to
|
||||
|
||||
#>
|
||||
|
||||
Param($ToggleSwitch)
|
||||
@ -15,7 +18,7 @@ Function Get-WinUtilToggleStatus {
|
||||
$system = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize').SystemUsesLightTheme
|
||||
if($app -eq 0 -and $system -eq 0){
|
||||
return $true
|
||||
}
|
||||
}
|
||||
else{
|
||||
return $false
|
||||
}
|
||||
@ -24,7 +27,7 @@ Function Get-WinUtilToggleStatus {
|
||||
$bingsearch = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Search').BingSearchEnabled
|
||||
if($bingsearch -eq 0){
|
||||
return $false
|
||||
}
|
||||
}
|
||||
else{
|
||||
return $true
|
||||
}
|
||||
|
@ -1,10 +1,13 @@
|
||||
function Get-WinUtilVariables {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
placeholder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Gets every form object of the provided type
|
||||
|
||||
.OUTPUTS
|
||||
List containing every object that matches the provided type
|
||||
|
||||
#>
|
||||
param (
|
||||
[Parameter()]
|
||||
@ -12,7 +15,7 @@ function Get-WinUtilVariables {
|
||||
[string]$Type
|
||||
)
|
||||
|
||||
$keys = $sync.keys | Where-Object {$psitem -like "WPF*"}
|
||||
$keys = $sync.keys | Where-Object {$psitem -like "WPF*"}
|
||||
|
||||
if($type){
|
||||
$output = $keys | ForEach-Object {
|
||||
@ -23,7 +26,7 @@ function Get-WinUtilVariables {
|
||||
}
|
||||
Catch{<#I am here so errors don't get outputted for a couple variables that don't have the .GetType() attribute#>}
|
||||
}
|
||||
return $output
|
||||
return $output
|
||||
}
|
||||
return $keys
|
||||
}
|
||||
|
@ -1,30 +1,29 @@
|
||||
function Install-WinUtilChoco {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Function is meant to ensure Choco is installed
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Installs Chocolatey if it is not already installed
|
||||
|
||||
#>
|
||||
|
||||
try{
|
||||
try {
|
||||
Write-Host "Checking if Chocolatey is Installed..."
|
||||
|
||||
if((Test-WinUtilPackageManager -choco)){
|
||||
Write-Host "Chocolatey Already Installed"
|
||||
return
|
||||
}
|
||||
|
||||
Write-Host "Seems Chocolatey is not installed, installing now?"
|
||||
#Let user decide if he wants to install Chocolatey
|
||||
$confirmation = Read-Host "Are you Sure You Want To Proceed:(y/n)"
|
||||
if ($confirmation -eq 'y') {
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) -ErrorAction Stop
|
||||
powershell choco feature enable -n allowGlobalConfirmation
|
||||
}
|
||||
|
||||
Write-Host "Seems Chocolatey is not installed, installing now"
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) -ErrorAction Stop
|
||||
powershell choco feature enable -n allowGlobalConfirmation
|
||||
|
||||
}
|
||||
Catch{
|
||||
throw [ChocoFailedInstall]::new('Failed to install')
|
||||
Catch {
|
||||
Write-Host "==========================================="
|
||||
Write-Host "-- Chocolatey failed to install ---"
|
||||
Write-Host "==========================================="
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,12 +1,19 @@
|
||||
Function Install-WinUtilProgramWinget {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This will install programs via Winget using a new powershell.exe instance to prevent the GUI from locking up.
|
||||
|
||||
Note the triple quotes are required any time you need a " in a normal script block.
|
||||
|
||||
.SYNOPSIS
|
||||
Manages the provided programs using Winget
|
||||
|
||||
.PARAMETER ProgramsToInstall
|
||||
A list of programs to manage
|
||||
|
||||
.PARAMETER manage
|
||||
The action to perform on the programs, can be either 'Installing' or 'Uninstalling'
|
||||
|
||||
.NOTES
|
||||
The triple quotes are required any time you need a " in a normal script block.
|
||||
|
||||
#>
|
||||
|
||||
param(
|
||||
@ -20,7 +27,7 @@ Function Install-WinUtilProgramWinget {
|
||||
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
|
||||
|
||||
Foreach ($Program in $($ProgramsToInstall -split ",")){
|
||||
|
||||
|
||||
Write-Progress -Activity "$manage Applications" -Status "$manage $Program $($x + 1) of $count" -PercentComplete $($x/$count*100)
|
||||
if($manage -eq "Installing"){
|
||||
Start-Process -FilePath winget -ArgumentList "install -e --accept-source-agreements --accept-package-agreements --silent $Program" -NoNewWindow -Wait
|
||||
@ -28,7 +35,7 @@ Function Install-WinUtilProgramWinget {
|
||||
if($manage -eq "Uninstalling"){
|
||||
Start-Process -FilePath winget -ArgumentList "uninstall -e --purge --force --silent $Program" -NoNewWindow -Wait
|
||||
}
|
||||
|
||||
|
||||
$X++
|
||||
}
|
||||
|
||||
|
@ -1,29 +1,29 @@
|
||||
function Get-LatestHash {
|
||||
$shaUrl = ((Invoke-WebRequest $apiLatestUrl -UseBasicParsing | ConvertFrom-Json).assets | Where-Object { $_.name -match '^Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt$' }).browser_download_url
|
||||
|
||||
|
||||
$shaFile = Join-Path -Path $tempFolder -ChildPath 'Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt'
|
||||
$WebClient.DownloadFile($shaUrl, $shaFile)
|
||||
|
||||
|
||||
Get-Content $shaFile
|
||||
}
|
||||
}
|
||||
|
||||
function Install-WinUtilWinget {
|
||||
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Function is meant to ensure winget is installed
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Installs Winget if it is not already installed
|
||||
|
||||
#>
|
||||
Try{
|
||||
Write-Host "Checking if Winget is Installed..."
|
||||
if (Test-WinUtilPackageManager -winget) {
|
||||
#Checks if winget executable exists and if the Windows Version is 1809 or higher
|
||||
# Checks if winget executable exists and if the Windows Version is 1809 or higher
|
||||
Write-Host "Winget Already Installed"
|
||||
return
|
||||
}
|
||||
|
||||
#Gets the computer's information
|
||||
# Gets the computer's information
|
||||
if ($null -eq $sync.ComputerInfo){
|
||||
$ComputerInfo = Get-ComputerInfo -ErrorAction Stop
|
||||
}
|
||||
@ -32,14 +32,14 @@ function Install-WinUtilWinget {
|
||||
}
|
||||
|
||||
if (($ComputerInfo.WindowsVersion) -lt "1809") {
|
||||
#Checks if Windows Version is too old for winget
|
||||
# Checks if Windows Version is too old for winget
|
||||
Write-Host "Winget is not supported on this version of Windows (Pre-1809)"
|
||||
return
|
||||
}
|
||||
|
||||
Write-Host "Running Alternative Installer and Direct Installing"
|
||||
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "irm https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/winget.ps1 | iex"
|
||||
|
||||
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install winget"
|
||||
|
||||
Write-Host "Winget Installed"
|
||||
}
|
||||
Catch{
|
||||
|
@ -1,9 +1,12 @@
|
||||
function Invoke-WinUtilBingSearch {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Sets Bing Search on or off
|
||||
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Disables/Enables Bing Search
|
||||
|
||||
.PARAMETER Enabled
|
||||
Indicates whether to enable or disable Bing Search
|
||||
|
||||
#>
|
||||
Param($Enabled)
|
||||
Try{
|
||||
|
@ -2,13 +2,10 @@ Function Invoke-WinUtilCurrentSystem {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Function is meant to read existing system registry and check according configuration.
|
||||
|
||||
Example: Is telemetry enabled? check the box.
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Checks to see what tweaks have already been applied and what programs are installed, and checks the according boxes
|
||||
|
||||
.EXAMPLE
|
||||
Get-WinUtilCheckBoxes "WPFInstall"
|
||||
|
||||
#>
|
||||
@ -46,19 +43,19 @@ Function Invoke-WinUtilCurrentSystem {
|
||||
$registryKeys = $sync.configs.tweaks.$Config.registry
|
||||
$scheduledtaskKeys = $sync.configs.tweaks.$Config.scheduledtask
|
||||
$serviceKeys = $sync.configs.tweaks.$Config.service
|
||||
|
||||
|
||||
if($registryKeys -or $scheduledtaskKeys -or $serviceKeys){
|
||||
$Values = @()
|
||||
|
||||
|
||||
Foreach ($tweaks in $registryKeys){
|
||||
Foreach($tweak in $tweaks){
|
||||
|
||||
|
||||
if(test-path $tweak.Path){
|
||||
$actualValue = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name)
|
||||
$expectedValue = $tweak.Value
|
||||
if ($expectedValue -notlike $actualValue){
|
||||
$values += $False
|
||||
$values += $False
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -67,7 +64,7 @@ Function Invoke-WinUtilCurrentSystem {
|
||||
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
|
||||
@ -81,7 +78,7 @@ Function Invoke-WinUtilCurrentSystem {
|
||||
Foreach ($tweaks in $serviceKeys){
|
||||
Foreach($tweak in $tweaks){
|
||||
$Service = Get-Service -Name $tweak.Name
|
||||
|
||||
|
||||
if($Service){
|
||||
$actualValue = $Service.StartType
|
||||
$expectedValue = $tweak.StartupType
|
||||
|
@ -1,9 +1,12 @@
|
||||
Function Invoke-WinUtilDarkMode {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Sets Dark Mode on or off
|
||||
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Enables/Disables Dark Mode
|
||||
|
||||
.PARAMETER DarkMoveEnabled
|
||||
Indicates the current dark mode state
|
||||
|
||||
#>
|
||||
Param($DarkMoveEnabled)
|
||||
Try{
|
||||
@ -15,7 +18,7 @@ Function Invoke-WinUtilDarkMode {
|
||||
Write-Host "Disabling Dark Mode"
|
||||
$DarkMoveValue = 1
|
||||
}
|
||||
|
||||
|
||||
$Theme = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize"
|
||||
Set-ItemProperty -Path $Theme -Name AppsUseLightTheme -Value $DarkMoveValue
|
||||
Set-ItemProperty -Path $Theme -Name SystemUsesLightTheme -Value $DarkMoveValue
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WinUtilFeatureInstall {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function converts all the values from the tweaks.json and routes them to the appropriate function
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Converts all the values from the tweaks.json and routes them to the appropriate function
|
||||
|
||||
#>
|
||||
|
||||
param(
|
||||
@ -13,7 +13,7 @@ function Invoke-WinUtilFeatureInstall {
|
||||
$CheckBox | ForEach-Object {
|
||||
if($sync.configs.feature.$psitem.feature){
|
||||
Foreach( $feature in $sync.configs.feature.$psitem.feature ){
|
||||
Try{
|
||||
Try{
|
||||
Write-Host "Installing $feature"
|
||||
Enable-WindowsOptionalFeature -Online -FeatureName $feature -All -NoRestart
|
||||
}
|
||||
@ -24,10 +24,10 @@ function Invoke-WinUtilFeatureInstall {
|
||||
|
||||
else{
|
||||
Write-Warning "Unable to Install $feature due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if($sync.configs.feature.$psitem.InvokeScript){
|
||||
Foreach( $script in $sync.configs.feature.$psitem.InvokeScript ){
|
||||
@ -44,10 +44,10 @@ function Invoke-WinUtilFeatureInstall {
|
||||
|
||||
else{
|
||||
Write-Warning "Unable to Install $feature due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,19 @@
|
||||
function Invoke-WinUtilScript {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will run a separate powershell script. Meant for things that can't be handled with the other functions
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Invokes the provided scriptblock. Intended for things that can't be handled with the other functions.
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the scriptblock being invoked
|
||||
|
||||
.PARAMETER scriptblock
|
||||
The scriptblock to be invoked
|
||||
|
||||
.EXAMPLE
|
||||
$Scriptblock = [scriptblock]::Create({"Write-output 'Hello World'"})
|
||||
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name "Hello World"
|
||||
|
||||
|
||||
#>
|
||||
param (
|
||||
$Name,
|
||||
@ -38,7 +43,7 @@ function Invoke-WinUtilScript {
|
||||
Catch {
|
||||
# Generic catch block to handle any other type of exception
|
||||
Write-Warning "Unable to run script for $name due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,9 +1,15 @@
|
||||
function Invoke-WinUtilTweaks {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function converts all the values from the tweaks.json and routes them to the appropriate function
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Invokes the function associated with each provided checkbox
|
||||
|
||||
.PARAMETER CheckBox
|
||||
The checkbox to invoke
|
||||
|
||||
.PARAMETER undo
|
||||
Indicates whether to undo the operation contained in the checkbox
|
||||
|
||||
#>
|
||||
|
||||
param(
|
||||
@ -18,7 +24,7 @@ function Invoke-WinUtilTweaks {
|
||||
ScriptType = "UndoScript"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Else{
|
||||
$Values = @{
|
||||
Registry = "Value"
|
||||
|
@ -1,13 +1,15 @@
|
||||
function Remove-WinUtilAPPX {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will remove any of the provided APPX names
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Removes all APPX packages that match the given name
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the APPX package to remove
|
||||
|
||||
.EXAMPLE
|
||||
Remove-WinUtilAPPX -Name "Microsoft.Microsoft3DViewer"
|
||||
|
||||
|
||||
#>
|
||||
param (
|
||||
$Name
|
||||
@ -24,11 +26,11 @@ function Remove-WinUtilAPPX {
|
||||
}
|
||||
Else{
|
||||
Write-Warning "Unable to uninstall $name due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
||||
Catch{
|
||||
Write-Warning "Unable to uninstall $name due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
@ -1,13 +1,15 @@
|
||||
function Set-WinUtilDNS {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will set the DNS of all interfaces that are in the "Up" state. It will lookup the values from the DNS.Json file
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Sets the DNS of all interfaces that are in the "Up" state. It will lookup the values from the DNS.Json file
|
||||
|
||||
.PARAMETER DNSProvider
|
||||
The DNS provider to set the DNS server to
|
||||
|
||||
.EXAMPLE
|
||||
Set-WinUtilDNS -DNSProvider "google"
|
||||
|
||||
|
||||
#>
|
||||
param($DNSProvider)
|
||||
if($DNSProvider -eq "Default"){return}
|
||||
@ -27,6 +29,6 @@ function Set-WinUtilDNS {
|
||||
}
|
||||
Catch{
|
||||
Write-Warning "Unable to set DNS Provider due to an unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,25 @@
|
||||
function Set-WinUtilRegistry {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will make all modifications to the registry
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Modifies the registry based on the given inputs
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the key to modify
|
||||
|
||||
.PARAMETER Path
|
||||
The path to the key
|
||||
|
||||
.PARAMETER Type
|
||||
The type of value to set the key to
|
||||
|
||||
.PARAMETER Value
|
||||
The value to set the key to
|
||||
|
||||
.EXAMPLE
|
||||
Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
|
||||
|
||||
#>
|
||||
|
||||
#>
|
||||
param (
|
||||
$Name,
|
||||
$Path,
|
||||
@ -16,7 +27,7 @@ function Set-WinUtilRegistry {
|
||||
$Value
|
||||
)
|
||||
|
||||
Try{
|
||||
Try{
|
||||
if(!(Test-Path 'HKU:\')){New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS}
|
||||
|
||||
If (!(Test-Path $Path)) {
|
||||
|
@ -1,10 +1,10 @@
|
||||
function Set-WinUtilRestorePoint {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will make a Restore Point
|
||||
|
||||
#>
|
||||
.SYNOPSIS
|
||||
Creates a Restore Point
|
||||
|
||||
#>
|
||||
|
||||
# Check if the user has administrative privileges
|
||||
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
||||
@ -24,7 +24,7 @@ function Set-WinUtilRestorePoint {
|
||||
$exists = Get-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -name "SystemRestorePointCreationFrequency" -ErrorAction SilentlyContinue
|
||||
if($null -eq $exists){
|
||||
write-host 'Changing system to allow multiple restore points per day'
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -Name "SystemRestorePointCreationFrequency" -Value "0" -Type DWord -Force -ErrorAction Stop | Out-Null
|
||||
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -Name "SystemRestorePointCreationFrequency" -Value "0" -Type DWord -Force -ErrorAction Stop | Out-Null
|
||||
}
|
||||
|
||||
# Get all the restore points for the current day
|
||||
@ -33,7 +33,7 @@ function Set-WinUtilRestorePoint {
|
||||
# Check if there is already a restore point created today
|
||||
if ($existingRestorePoints.Count -eq 0) {
|
||||
$description = "System Restore Point created by WinUtil"
|
||||
|
||||
|
||||
Checkpoint-Computer -Description $description -RestorePointType "MODIFY_SETTINGS"
|
||||
Write-Host -ForegroundColor Green "System Restore Point Created Successfully"
|
||||
}
|
||||
|
@ -1,13 +1,18 @@
|
||||
function Set-WinUtilScheduledTask {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will enable/disable the provided Scheduled Task
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Enables/Disables the provided Scheduled Task
|
||||
|
||||
.PARAMETER Name
|
||||
The path to the Scheduled Task
|
||||
|
||||
.PARAMETER State
|
||||
The State to set the Task to
|
||||
|
||||
.EXAMPLE
|
||||
Set-WinUtilScheduledTask -Name "Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" -State "Disabled"
|
||||
|
||||
|
||||
#>
|
||||
param (
|
||||
$Name,
|
||||
@ -35,6 +40,6 @@ function Set-WinUtilScheduledTask {
|
||||
}
|
||||
Catch{
|
||||
Write-Warning "Unable to run script for $name due to unhandled exception"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
}
|
@ -1,24 +1,29 @@
|
||||
Function Set-WinUtilService {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will change the startup type of services and start/stop them as needed
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Changes the startup type of the given service
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the service to modify
|
||||
|
||||
.PARAMETER StartupType
|
||||
The startup type to set the service to
|
||||
|
||||
.EXAMPLE
|
||||
Set-WinUtilService -Name "HomeGroupListener" -StartupType "Manual"
|
||||
|
||||
#>
|
||||
|
||||
#>
|
||||
param (
|
||||
$Name,
|
||||
$StartupType
|
||||
)
|
||||
try {
|
||||
Write-Host "Setting Service $Name to $StartupType"
|
||||
|
||||
|
||||
# Check if the service exists
|
||||
$service = Get-Service -Name $Name -ErrorAction Stop
|
||||
|
||||
|
||||
# Service exists, proceed with changing properties
|
||||
$service | Set-Service -StartupType $StartupType -ErrorAction Stop
|
||||
}
|
||||
@ -29,5 +34,5 @@ Function Set-WinUtilService {
|
||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
||||
Write-Warning $_.Exception.Message
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,13 +1,18 @@
|
||||
function Set-WinUtilUITheme {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function will set theme to the XAML file
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Sets the theme of the XAML file
|
||||
|
||||
.PARAMETER inputXML
|
||||
A string representing the XAML object to modify
|
||||
|
||||
.PARAMETER themeName
|
||||
The name of the theme to set the XAML to. Defaults to 'matrix'
|
||||
|
||||
.EXAMPLE
|
||||
Set-WinUtilUITheme -inputXAML $inputXAML
|
||||
|
||||
|
||||
#>
|
||||
param
|
||||
(
|
||||
@ -41,7 +46,7 @@ function Set-WinUtilUITheme {
|
||||
}
|
||||
catch {
|
||||
Write-Warning "Unable to apply theme"
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
Write-Warning $psitem.Exception.StackTrace
|
||||
}
|
||||
|
||||
return $inputXML;
|
||||
|
@ -1,9 +1,15 @@
|
||||
function Test-WinUtilPackageManager {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Checks for Winget or Choco depending on the parameter
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Checks if Winget and/or Choco are installed
|
||||
|
||||
.PARAMETER winget
|
||||
Check if Winget is installed
|
||||
|
||||
.PARAMETER choco
|
||||
Check if Chocolatey is installed
|
||||
|
||||
#>
|
||||
|
||||
Param(
|
||||
|
@ -1,10 +1,10 @@
|
||||
Function Update-WinUtilProgramWinget {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This will update programs via Winget using a new powershell.exe instance to prevent the GUI from locking up.
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
This will update all programs using Winget
|
||||
|
||||
#>
|
||||
|
||||
[ScriptBlock]$wingetinstall = {
|
||||
|
@ -1,17 +1,18 @@
|
||||
function Invoke-WPFButton {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Meant to make creating buttons easier. There is a section below in the gui that will assign this function to every button.
|
||||
This way you can dictate what each button does from this function.
|
||||
|
||||
Input will be the name of the button that is clicked.
|
||||
#>
|
||||
|
||||
Param ([string]$Button)
|
||||
|
||||
#Use this to get the name of the button
|
||||
.SYNOPSIS
|
||||
Invokes the function associated with the clicked button
|
||||
|
||||
.PARAMETER Button
|
||||
The name of the button that was clicked
|
||||
|
||||
#>
|
||||
|
||||
Param ([string]$Button)
|
||||
|
||||
# Use this to get the name of the button
|
||||
#[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info")
|
||||
|
||||
Switch -Wildcard ($Button){
|
||||
|
@ -1,9 +1,12 @@
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Simple Switch for legacy windows
|
||||
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Opens the requested legacy panel
|
||||
|
||||
.PARAMETER Panel
|
||||
The panel to open
|
||||
|
||||
#>
|
||||
param($Panel)
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WPFFeatureInstall {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
GUI Function to install Windows Features
|
||||
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Installs selected Windows Features
|
||||
|
||||
#>
|
||||
|
||||
if($sync.ProcessRunning){
|
||||
@ -26,12 +26,12 @@ function Invoke-WPFFeatureInstall {
|
||||
Write-Host "--- Features are Installed ---"
|
||||
Write-Host "--- A Reboot may be required ---"
|
||||
Write-Host "==================================="
|
||||
|
||||
|
||||
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
||||
$MessageboxTitle = "All features are now installed "
|
||||
$Messageboxbody = ("Done")
|
||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||
|
||||
|
||||
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||
}
|
||||
}
|
@ -1,14 +1,18 @@
|
||||
function Invoke-WPFFixesNetwork {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Resets various network configurations
|
||||
|
||||
#>
|
||||
|
||||
Write-Host "Resetting Network with netsh"
|
||||
|
||||
# Reset WinSock catalog to a clean state
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
|
||||
# Resets WinHTTP proxy setting to DIRECT
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
|
||||
# Removes all user configured IP settings
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
|
||||
|
||||
Write-Host "Process complete. Please reboot your computer."
|
||||
@ -19,7 +23,7 @@ function Invoke-WPFFixesNetwork {
|
||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||
|
||||
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||
Write-Host "================================="
|
||||
Write-Host "-- Reset Network Configuration --"
|
||||
Write-Host "================================="
|
||||
Write-Host "=========================================="
|
||||
Write-Host "-- Network Configuration has been Reset --"
|
||||
Write-Host "=========================================="
|
||||
}
|
@ -1,13 +1,13 @@
|
||||
function Invoke-WPFFixesUpdate {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Performs various tasks in an attempt to repair Windows Update
|
||||
|
||||
#>
|
||||
|
||||
### Reset Windows Update Script - reregister dlls, services, and remove registry entries.
|
||||
# Reset Windows Update Script - reregister dlls, services, and remove registry entries
|
||||
Write-Host "1. Stopping Windows Update Services..."
|
||||
Stop-Service -Name BITS
|
||||
Stop-Service -Name wuauserv
|
||||
@ -83,7 +83,7 @@ Write-Host "12) Forcing discovery..."
|
||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||
|
||||
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||
Write-Host "================================="
|
||||
Write-Host "-- Reset ALL Updates to Factory -"
|
||||
Write-Host "================================="
|
||||
Write-Host "==============================================="
|
||||
Write-Host "-- Reset All Windows Update Settings to Stock -"
|
||||
Write-Host "==============================================="
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
Function Invoke-WPFFormVariables {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Prints the logo
|
||||
|
||||
#>
|
||||
#If ($global:ReadmeDisplay -ne $true) { Write-Host "If you need to reference this display again, run Get-FormVariables" -ForegroundColor Yellow; $global:ReadmeDisplay = $true }
|
||||
|
||||
|
@ -1,8 +1,11 @@
|
||||
function Invoke-WPFGetInstalled {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
placeholder
|
||||
.SYNOPSIS
|
||||
Invokes the function that gets the checkboxes to check in a new runspace
|
||||
|
||||
.PARAMETER checkbox
|
||||
Indicates whether to check for installed 'winget' programs or applied 'tweaks'
|
||||
|
||||
#>
|
||||
param($checkbox)
|
||||
@ -31,9 +34,9 @@ function Invoke-WPFGetInstalled {
|
||||
if($checkbox -eq "tweaks"){
|
||||
Write-Host "Getting Installed Tweaks..."
|
||||
}
|
||||
|
||||
|
||||
$Checkboxes = Invoke-WinUtilCurrentSystem -CheckBox $checkbox
|
||||
|
||||
|
||||
$sync.form.Dispatcher.invoke({
|
||||
foreach($checkbox in $Checkboxes){
|
||||
$sync.$checkbox.ischecked = $True
|
||||
|
@ -1,13 +1,18 @@
|
||||
function Invoke-WPFImpex {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
This function handles importing and exporting of the checkboxes checked for the tweaks section
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Handles importing and exporting of the checkboxes checked for the tweaks section
|
||||
|
||||
.PARAMETER type
|
||||
Indicates whether to 'import' or 'export'
|
||||
|
||||
.PARAMETER checkbox
|
||||
The checkbox to export to a file or apply the imported file to
|
||||
|
||||
.EXAMPLE
|
||||
Invoke-WPFImpex -type "export"
|
||||
|
||||
|
||||
#>
|
||||
param(
|
||||
$type,
|
||||
@ -18,7 +23,7 @@ function Invoke-WPFImpex {
|
||||
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
|
||||
}
|
||||
if ($type -eq "import"){
|
||||
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog
|
||||
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog
|
||||
}
|
||||
|
||||
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
|
||||
@ -28,7 +33,7 @@ function Invoke-WPFImpex {
|
||||
if($FileBrowser.FileName -eq ""){
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if ($type -eq "export"){
|
||||
$jsonFile = Get-WinUtilCheckBoxes $checkbox -unCheck $false
|
||||
$jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WPFInstall {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Installs the selected programs using winget
|
||||
|
||||
#>
|
||||
|
||||
if($sync.ProcessRunning){
|
||||
@ -28,14 +28,14 @@ function Invoke-WPFInstall {
|
||||
# Ensure winget is installed
|
||||
Install-WinUtilWinget
|
||||
|
||||
# Install all winget programs in new window
|
||||
# Install all selected programs in new window
|
||||
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall
|
||||
|
||||
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
||||
$MessageboxTitle = "Installs are Finished "
|
||||
$Messageboxbody = ("Done")
|
||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||
|
||||
|
||||
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||
|
||||
Write-Host "==========================================="
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WPFInstallUpgrade {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Invokes the function that upgrades all installed programs using winget
|
||||
|
||||
#>
|
||||
if(!(Test-WinUtilPackageManager -winget)){
|
||||
Write-Host "==========================================="
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WPFPanelAutologin {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Enables autologin using Sysinternals Autologon.exe
|
||||
|
||||
#>
|
||||
curl.exe -ss "https://live.sysinternals.com/Autologon.exe" -o $env:temp\autologin.exe # Official Microsoft recommendation https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
|
||||
cmd /c $env:temp\autologin.exe /accepteula
|
||||
|
@ -1,9 +1,26 @@
|
||||
function Invoke-WPFPanelDISM {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Checks for system corruption using Chkdsk, SFC, and DISM
|
||||
|
||||
.DESCRIPTION
|
||||
1. Chkdsk - Fixes disk and filesystem corruption
|
||||
2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted
|
||||
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
||||
4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image
|
||||
|
||||
.NOTES
|
||||
Command Arguments:
|
||||
1. Chkdsk
|
||||
/Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot
|
||||
2. SFC
|
||||
/ScanNow - Performs a scan of the system files and fixes any corruption
|
||||
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
||||
/Online - Fixes the currently running system image
|
||||
/Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files
|
||||
/Restorehealth - Performs a scan of the image and fixes any corruption
|
||||
|
||||
#>
|
||||
Start-Process PowerShell -ArgumentList "Write-Host '(1/4) Chkdsk' -ForegroundColor Green; Chkdsk /scan;
|
||||
Write-Host '`n(2/4) SFC - 1st scan' -ForegroundColor Green; sfc /scannow;
|
||||
|
@ -1,8 +1,17 @@
|
||||
function Invoke-WPFPresets {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Meant to make settings presets easier in the tweaks tab. Will pull the data from config/preset.json
|
||||
.SYNOPSIS
|
||||
Sets the options in the tweaks panel to the given preset
|
||||
|
||||
.PARAMETER preset
|
||||
The preset to set the options to
|
||||
|
||||
.PARAMETER imported
|
||||
If the preset is imported from a file, defaults to false
|
||||
|
||||
.PARAMETER checkbox
|
||||
The checkbox to set the options to, defaults to 'WPFTweaks'
|
||||
|
||||
#>
|
||||
|
||||
|
@ -1,40 +1,41 @@
|
||||
function Invoke-WPFRunspace {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Simple function to make it easier to invoke a runspace from inside the script.
|
||||
|
||||
.EXAMPLE
|
||||
.SYNOPSIS
|
||||
Creates and invokes a runspace using the given scriptblock and argumentlist
|
||||
|
||||
$params = @{
|
||||
ScriptBlock = $sync.ScriptsInstallPrograms
|
||||
ArgumentList = "Installadvancedip,Installbitwarden"
|
||||
Verbose = $true
|
||||
}
|
||||
.PARAMETER ScriptBlock
|
||||
The scriptblock to invoke in the runspace
|
||||
|
||||
.PARAMETER ArgumentList
|
||||
A list of arguments to pass to the runspace
|
||||
|
||||
.EXAMPLE
|
||||
Invoke-WPFRunspace `
|
||||
-ScriptBlock $sync.ScriptsInstallPrograms `
|
||||
-ArgumentList "Installadvancedip,Installbitwarden" `
|
||||
|
||||
Invoke-WPFRunspace @params
|
||||
|
||||
#>
|
||||
|
||||
[CmdletBinding()]
|
||||
Param (
|
||||
$ScriptBlock,
|
||||
$ArgumentList
|
||||
)
|
||||
)
|
||||
|
||||
#Crate a PowerShell instance.
|
||||
# Create a PowerShell instance
|
||||
$script:powershell = [powershell]::Create()
|
||||
|
||||
#Add Scriptblock and Arguments to runspace
|
||||
# Add Scriptblock and Arguments to runspace
|
||||
$script:powershell.AddScript($ScriptBlock)
|
||||
$script:powershell.AddArgument($ArgumentList)
|
||||
$script:powershell.RunspacePool = $sync.runspace
|
||||
|
||||
#Run our RunspacePool.
|
||||
|
||||
# Execute the RunspacePool
|
||||
$script:handle = $script:powershell.BeginInvoke()
|
||||
|
||||
#Cleanup our RunspacePool threads when they are complete ie. GC.
|
||||
# Clean up the RunspacePool threads when they are complete, and invoke the garbage collector to clean up the memory
|
||||
if ($script:handle.IsCompleted)
|
||||
{
|
||||
$script:powershell.EndInvoke($script:handle)
|
||||
|
@ -1,15 +1,18 @@
|
||||
function Invoke-WPFShortcut {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Creates a shortcut
|
||||
.SYNOPSIS
|
||||
Creates a shortcut and prompts for a save location
|
||||
|
||||
.PARAMETER ShortcutToAdd
|
||||
The name of the shortcut to add
|
||||
|
||||
#>
|
||||
param($ShortcutToAdd)
|
||||
|
||||
Switch ($ShortcutToAdd) {
|
||||
"WinUtil" {
|
||||
$SourceExe = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
|
||||
$SourceExe = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
|
||||
$IRM = 'irm https://christitus.com/win | iex'
|
||||
$Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList'
|
||||
$ArgumentsToSourceExe = "$powershell '$IRM'"
|
||||
@ -28,6 +31,6 @@ function Invoke-WPFShortcut {
|
||||
$Shortcut.TargetPath = $SourceExe
|
||||
$Shortcut.Arguments = $ArgumentsToSourceExe
|
||||
$Shortcut.Save()
|
||||
|
||||
|
||||
Write-Host "Shortcut for $ShortcutToAdd has been saved to $($FileBrowser.FileName)"
|
||||
}
|
@ -1,10 +1,13 @@
|
||||
function Invoke-WPFTab {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Sole purpose of this function is to reduce duplicated code for switching between tabs.
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Sets the selected tab to the tab that was clicked
|
||||
|
||||
.PARAMETER ClickedTab
|
||||
The name of the tab that was clicked
|
||||
|
||||
#>
|
||||
|
||||
Param ($ClickedTab)
|
||||
@ -13,7 +16,7 @@ function Invoke-WPFTab {
|
||||
$x = [int]($ClickedTab -replace "WPFTab","" -replace "BT","") - 1
|
||||
|
||||
0..($Tabs.Count -1 ) | ForEach-Object {
|
||||
|
||||
|
||||
if ($x -eq $psitem){
|
||||
$sync.$TabNav.Items[$psitem].IsSelected = $true
|
||||
}
|
||||
|
@ -1,17 +1,18 @@
|
||||
function Invoke-WPFToggle {
|
||||
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
Meant to make creating toggle switches easier. There is a section below in the gui that will assign this function to every switch.
|
||||
This way you can dictate what each button does from this function.
|
||||
|
||||
Input will be the name of the toggle that is checked.
|
||||
#>
|
||||
|
||||
Param ([string]$Button)
|
||||
|
||||
#Use this to get the name of the button
|
||||
.SYNOPSIS
|
||||
Invokes the scriptblock for the given toggle
|
||||
|
||||
.PARAMETER Button
|
||||
The name of the toggle to invoke
|
||||
|
||||
#>
|
||||
|
||||
Param ([string]$Button)
|
||||
|
||||
# Use this to get the name of the button
|
||||
#[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info")
|
||||
|
||||
Switch -Wildcard ($Button){
|
||||
|
@ -1,46 +1,51 @@
|
||||
Function Invoke-WPFUltimatePerformance {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Creates or removes the Ultimate Performance power scheme
|
||||
|
||||
.PARAMETER State
|
||||
Indicates whether to enable or disable the Ultimate Performance power scheme
|
||||
|
||||
#>
|
||||
param($State)
|
||||
Try{
|
||||
|
||||
if($state -eq "Enabled"){
|
||||
# Define the name and GUID of the power scheme you want to add
|
||||
# Define the name and GUID of the power scheme
|
||||
$powerSchemeName = "Ultimate Performance"
|
||||
$powerSchemeGuid = "e9a42b02-d5df-448d-aa00-03f14749eb61"
|
||||
|
||||
# Get all power schemes
|
||||
$schemes = powercfg /list | Out-String -Stream
|
||||
|
||||
# Find the scheme you want to add
|
||||
# Check if the power scheme already exists
|
||||
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
|
||||
|
||||
# If the scheme does not exist, add it
|
||||
if ($null -eq $ultimateScheme) {
|
||||
Write-Host "Power scheme '$powerSchemeName' not found. Adding..."
|
||||
|
||||
# Add the power scheme
|
||||
powercfg /duplicatescheme $powerSchemeGuid
|
||||
powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE
|
||||
powercfg -setactive $powerSchemeGuid
|
||||
powercfg -change -monitor-timeout-ac 0
|
||||
|
||||
|
||||
Write-Host "Power scheme added successfully."
|
||||
}
|
||||
else {
|
||||
Write-Host "Power scheme '$powerSchemeName' already exists."
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif($state -eq "Disabled"){
|
||||
# Define the name of the power scheme you want to remove
|
||||
# Define the name of the power scheme
|
||||
$powerSchemeName = "Ultimate Performance"
|
||||
|
||||
# Get all power schemes
|
||||
$schemes = powercfg /list | Out-String -Stream
|
||||
|
||||
# Find the scheme you want to remove
|
||||
# Find the scheme to be removed
|
||||
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
|
||||
|
||||
# If the scheme exists, remove it
|
||||
@ -50,10 +55,10 @@ Function Invoke-WPFUltimatePerformance {
|
||||
|
||||
if($null -ne $guid){
|
||||
Write-Host "Found power scheme '$powerSchemeName' with GUID $guid. Removing..."
|
||||
|
||||
|
||||
# Remove the power scheme
|
||||
powercfg /delete $guid
|
||||
|
||||
|
||||
Write-Host "Power scheme removed successfully."
|
||||
}
|
||||
else {
|
||||
@ -65,7 +70,7 @@ Function Invoke-WPFUltimatePerformance {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Catch{
|
||||
Write-Warning $psitem.Exception.Message
|
||||
|
@ -1,13 +1,13 @@
|
||||
function Invoke-WPFUnInstall {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Uninstalls the selected programs
|
||||
|
||||
#>
|
||||
|
||||
if($sync.ProcessRunning){
|
||||
$msg = "Install process is currently running."
|
||||
$msg = "Install process is currently running"
|
||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
||||
return
|
||||
}
|
||||
@ -22,7 +22,7 @@ function Invoke-WPFUnInstall {
|
||||
|
||||
$ButtonType = [System.Windows.MessageBoxButton]::YesNo
|
||||
$MessageboxTitle = "Are you sure?"
|
||||
$Messageboxbody = ("This will uninstall the following applications `n $WingetInstall")
|
||||
$Messageboxbody = ("This will uninstall the following applications: `n $WingetInstall")
|
||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||
|
||||
$confirm = [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||
@ -34,23 +34,23 @@ function Invoke-WPFUnInstall {
|
||||
try{
|
||||
$sync.ProcessRunning = $true
|
||||
|
||||
# Install all winget programs in new window
|
||||
# Install all selected programs in new window
|
||||
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall -Manage "Uninstalling"
|
||||
|
||||
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
||||
$MessageboxTitle = "Uninstalls are Finished "
|
||||
$Messageboxbody = ("Done")
|
||||
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
||||
|
||||
|
||||
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
||||
|
||||
Write-Host "==========================================="
|
||||
Write-Host "-- Uninstalls have finished ---"
|
||||
Write-Host "-- Uninstalls have finished ---"
|
||||
Write-Host "==========================================="
|
||||
}
|
||||
Catch {
|
||||
Write-Host "==========================================="
|
||||
Write-Host "-- Winget failed to install ---"
|
||||
Write-Host "-- Winget failed to install ---"
|
||||
Write-Host "==========================================="
|
||||
}
|
||||
$sync.ProcessRunning = $False
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WPFUpdatesdefault {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Resets Windows Update settings to default
|
||||
|
||||
#>
|
||||
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
|
||||
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
|
||||
@ -39,7 +39,7 @@ function Invoke-WPFUpdatesdefault {
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "BranchReadinessLevel" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferFeatureUpdatesPeriodInDays" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferQualityUpdatesPeriodInDays" -ErrorAction SilentlyContinue
|
||||
Write-Host "================================="
|
||||
Write-Host "--- Updates Set to Default ---"
|
||||
Write-Host "================================="
|
||||
Write-Host "==================================================="
|
||||
Write-Host "--- Windows Update Settings Reset to Default ---"
|
||||
Write-Host "==================================================="
|
||||
}
|
@ -1,9 +1,12 @@
|
||||
function Invoke-WPFUpdatesdisable {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Disables Windows Update
|
||||
|
||||
.NOTES
|
||||
Disabling Windows Update is not recommended. This is only for advanced users who know what they are doing.
|
||||
|
||||
#>
|
||||
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
|
||||
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
|
||||
@ -27,6 +30,6 @@ function Invoke-WPFUpdatesdisable {
|
||||
Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Disabled
|
||||
}
|
||||
Write-Host "================================="
|
||||
Write-Host "--- Updates ARE DISABLED ---"
|
||||
Write-Host "--- Updates ARE DISABLED ---"
|
||||
Write-Host "================================="
|
||||
}
|
@ -1,9 +1,16 @@
|
||||
function Invoke-WPFUpdatessecurity {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Sets Windows Update to recommended settings
|
||||
|
||||
.DESCRIPTION
|
||||
1. Disables driver offering through Windows Update
|
||||
2. Disables Windows Update automatic restart
|
||||
3. Sets Windows Update to Semi-Annual Channel (Targeted)
|
||||
4. Defers feature updates for 365 days
|
||||
5. Defers quality updates for 4 days
|
||||
|
||||
#>
|
||||
Write-Host "Disabling driver offering through Windows Update..."
|
||||
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata")) {
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WPFtweaksbutton {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Invokes the functions associated with each group of checkboxes
|
||||
|
||||
#>
|
||||
|
||||
if($sync.ProcessRunning){
|
||||
@ -22,13 +22,13 @@ function Invoke-WPFtweaksbutton {
|
||||
return
|
||||
}
|
||||
|
||||
Set-WinUtilRestorePoint
|
||||
|
||||
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
|
||||
param($Tweaks)
|
||||
|
||||
$sync.ProcessRunning = $true
|
||||
|
||||
Set-WinUtilRestorePoint
|
||||
|
||||
Foreach ($tweak in $tweaks){
|
||||
Invoke-WinUtilTweaks $tweak
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
function Invoke-WPFundoall {
|
||||
<#
|
||||
|
||||
.DESCRIPTION
|
||||
PlaceHolder
|
||||
|
||||
|
||||
.SYNOPSIS
|
||||
Undoes every selected tweak
|
||||
|
||||
#>
|
||||
|
||||
if($sync.ProcessRunning){
|
||||
@ -18,8 +18,8 @@ function Invoke-WPFundoall {
|
||||
$msg = "Please check the tweaks you wish to undo."
|
||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
|
||||
param($Tweaks)
|
||||
|
||||
|
Reference in New Issue
Block a user