Debloat lib refactor/cleanup part 1

- Decrease the unnecessary amount of complexity in some funcions
main
Plínio Larrubia 2 years ago committed by Plínio Larrubia
parent fa0a439b63
commit 197b8e47f4
No known key found for this signature in database
GPG Key ID: 057B0A87CB137C69

@ -36,7 +36,7 @@ jobs:
path: .\
recurse: true
# Exclude rules that will not be worked on / are invalid
# Command: invoke-scriptanalyzer . -excludeRule: "PSAvoidUsingInvokeExpression", "PSAvoidUsingWriteHost", "PSUseShouldProcessForStateChangingFunctions"
# Command: invoke-scriptanalyzer . -recurse -excludeRule: "PSAvoidUsingInvokeExpression", "PSAvoidUsingWriteHost", "PSUseShouldProcessForStateChangingFunctions"
excludeRule: '"PSAvoidUsingInvokeExpression", "PSAvoidUsingWriteHost", "PSUseShouldProcessForStateChangingFunctions"'
output: results.sarif

@ -1,60 +1,38 @@
Import-Module -DisableNameChecking $PSScriptRoot\..\"title-templates.psm1"
function Find-ScheduledTask() {
[CmdletBinding()]
[OutputType([Bool])]
param (
[Parameter(Mandatory = $true)]
[String] $ScheduledTask
)
If (Get-ScheduledTaskInfo -TaskName $ScheduledTask -ErrorAction SilentlyContinue) {
return $true
} Else {
Write-Status -Types "?", $TweakType -Status "The $ScheduledTask task was not found." -Warning
return $false
}
}
function Set-ScheduledTaskState() {
[CmdletBinding()]
param (
[Parameter(Mandatory = $false)]
[Switch] $Disabled,
[Parameter(Mandatory = $false)]
[Switch] $Ready,
[Parameter(Mandatory = $true)]
[ValidateSet('Disabled', 'Enabled')]
[String] $State,
[Parameter(Mandatory = $true)]
[Array] $ScheduledTasks,
[Parameter(Mandatory = $false)]
[Array] $Filter,
[Parameter(Mandatory = $false)]
[ScriptBlock] $CustomMessage
[Array] $Filter
)
$Script:TweakType = "TaskScheduler"
Begin {
$Script:TweakType = "TaskScheduler"
}
ForEach ($ScheduledTask in $ScheduledTasks) {
If (Find-ScheduledTask $ScheduledTask) {
If ($ScheduledTask -in $Filter) {
Write-Status -Types "?", $TweakType -Status "The $ScheduledTask ($((Get-ScheduledTask $ScheduledTask).TaskName)) will be skipped as set on Filter..." -Warning
Process {
ForEach ($ScheduledTask in $ScheduledTasks) {
If (!(Get-ScheduledTaskInfo -TaskName $ScheduledTask -ErrorAction SilentlyContinue)) {
Write-Status -Types "?", $TweakType -Status "The $ScheduledTask task was not found." -Warning
Continue
}
If (!$CustomMessage) {
If ($Disabled) {
Write-Status -Types "-", $TweakType -Status "Disabling the $ScheduledTask task..."
} ElseIf ($Ready) {
Write-Status -Types "+", $TweakType -Status "Enabling the $ScheduledTask task..."
} Else {
Write-Status -Types "?", $TweakType -Status "No parameter received (valid params: -Disabled or -Ready)" -Warning
}
} Else {
Write-Status -Types "@", $TweakType -Status $(Invoke-Expression "$CustomMessage")
If ($ScheduledTask -in $Filter) {
Write-Status -Types "?", $TweakType -Status "The $ScheduledTask ($((Get-ScheduledTask $ScheduledTask).TaskName)) will be skipped as set on Filter..." -Warning
Continue
}
If ($Disabled) {
If ($State -eq 'Disabled') {
Write-Status -Types "-", $TweakType -Status "Disabling the $ScheduledTask task..."
Get-ScheduledTask -TaskName (Split-Path -Path $ScheduledTask -Leaf) | Where-Object State -Like "R*" | Disable-ScheduledTask # R* = Ready/Running
} ElseIf ($Ready) {
} ElseIf ($State -eq 'Enabled') {
Write-Status -Types "+", $TweakType -Status "Enabling the $ScheduledTask task..."
Get-ScheduledTask -TaskName (Split-Path -Path $ScheduledTask -Leaf) | Where-Object State -Like "Disabled" | Enable-ScheduledTask
}
}
@ -62,11 +40,9 @@ function Set-ScheduledTaskState() {
}
<#
Set-ScheduledTaskState -Disabled -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3")
Set-ScheduledTaskState -Disabled -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3") -Filter @("ScheduledTask3")
Set-ScheduledTaskState -Disabled -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3") -Filter @("ScheduledTask3") -CustomMessage { "Setting $ScheduledTask as Disabled!"}
Set-ScheduledTaskState -State Disabled -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3")
Set-ScheduledTaskState -State Disabled -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3") -Filter @("ScheduledTask3")
Set-ScheduledTaskState -Ready -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3")
Set-ScheduledTaskState -Ready -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3") -Filter @("ScheduledTask3")
Set-ScheduledTaskState -Ready -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3") -Filter @("ScheduledTask3") -CustomMessage { "Setting $ScheduledTask as Ready!"}
Set-ScheduledTaskState -State Enabled -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3")
Set-ScheduledTaskState -State Enabled -ScheduledTasks @("ScheduledTask1", "ScheduledTask2", "ScheduledTask3") -Filter @("ScheduledTask3")
#>

@ -1,21 +1,5 @@
Import-Module -DisableNameChecking $PSScriptRoot\..\"title-templates.psm1"
function Find-Service() {
[CmdletBinding()]
[OutputType([Bool])]
param (
[Parameter(Mandatory = $true)]
[String] $Service
)
If (Get-Service $Service -ErrorAction SilentlyContinue) {
return $true
} Else {
Write-Status -Types "?", $TweakType -Status "The $Service service was not found." -Warning
return $false
}
}
function Set-ServiceStartup() {
[CmdletBinding()]
param (
@ -33,11 +17,18 @@ function Set-ServiceStartup() {
[ScriptBlock] $CustomMessage
)
$Script:SecurityFilterOnEnable = @("RemoteAccess", "RemoteRegistry")
$Script:TweakType = "Service"
Begin {
$Script:SecurityFilterOnEnable = @("RemoteAccess", "RemoteRegistry")
$Script:TweakType = "Service"
}
Process {
ForEach ($Service in $Services) {
If (!(Get-Service $Service -ErrorAction SilentlyContinue)) {
Write-Status -Types "?", $TweakType -Status "The $Service service was not found." -Warning
Continue
}
ForEach ($Service in $Services) {
If (Find-Service $Service) {
If (($Service -in $SecurityFilterOnEnable) -and (($Automatic) -or ($Manual))) {
Write-Status -Types "?", $TweakType -Status "Skipping $Service ($((Get-Service $Service).DisplayName)) to avoid a security vulnerability..." -Warning
Continue

@ -3,17 +3,23 @@ Import-Module -DisableNameChecking $PSScriptRoot\..\"title-templates.psm1"
function Remove-UWPAppx() {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[Array] $AppxPackages
)
$TweakType = "UWP"
ForEach ($AppxPackage in $AppxPackages) {
If ((Get-AppxPackage -AllUsers -Name $AppxPackage) -or (Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like $AppxPackage)) {
Write-Status -Types "-", $TweakType -Status "Trying to remove $AppxPackage from ALL users..."
Get-AppxPackage -AllUsers -Name $AppxPackage | Remove-AppxPackage # App
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like $AppxPackage | Remove-AppxProvisionedPackage -Online -AllUsers # Payload
} Else {
Write-Status -Types "?", $TweakType -Status "$AppxPackage was already removed or not found..." -Warning
Begin {
$Script:TweakType = "UWP"
}
Process {
ForEach ($AppxPackage in $AppxPackages) {
If ((Get-AppxPackage -AllUsers -Name $AppxPackage) -or (Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like $AppxPackage)) {
Write-Status -Types "-", $TweakType -Status "Trying to remove $AppxPackage from ALL users..."
Get-AppxPackage -AllUsers -Name $AppxPackage | Remove-AppxPackage # App
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like $AppxPackage | Remove-AppxProvisionedPackage -Online -AllUsers # Payload
} Else {
Write-Status -Types "?", $TweakType -Status "$AppxPackage was already removed or not found..." -Warning
}
}
}
}

@ -3,11 +3,11 @@ Import-Module -DisableNameChecking $PSScriptRoot\..\"title-templates.psm1"
function Set-CapabilityState() {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[Array] $Capabilities,
[Parameter(Mandatory = $true)]
[ValidateSet('Disabled', 'Enabled')]
[String] $State
[String] $State,
[Parameter(Mandatory = $true)]
[Array] $Capabilities
)
Begin {
@ -22,12 +22,18 @@ function Set-CapabilityState() {
}
If ($State -eq 'Disabled') {
Write-Status -Types "-", $TweakType -Status "Uninstalling the $((Get-WindowsCapability -Online -Name $Capability).Name) capability..."
Get-WindowsCapability -Online | Where-Object Name -Like "$Capability" | Remove-WindowsCapability -Online
Write-Status -Types "-", $TweakType -Status "Uninstalling the $Capability ($((Get-WindowsCapability -Online -Name $Capability).DisplayName)) capability..."
Get-WindowsCapability -Online -Name "$Capability" | Where-Object State -eq "Installed" | Remove-WindowsCapability -Online
} ElseIf ($State -eq 'Enabled') {
Write-Status -Types "+", $TweakType -Status "Installing the $((Get-WindowsCapability -Online -Name $Capability).Name) capability..."
Get-WindowsCapability -Online | Where-Object Name -Like "$Capability" | Add-WindowsCapability -Online
Write-Status -Types "+", $TweakType -Status "Installing the $Capability ($((Get-WindowsCapability -Online -Name $Capability).DisplayName)) capability..."
Get-WindowsCapability -Online -Name "$Capability" | Where-Object State -eq "NotPresent" | Add-WindowsCapability -Online
}
}
}
}
<#
Set-CapabilityState -State Disabled -Capabilities "Capability*"
Set-CapabilityState -State Disabled -Capabilities @("Capability1", "Capability2")
Set-CapabilityState -State Enabled -Capabilities @("Capability1", "Capability*")
#>

@ -1,21 +1,5 @@
Import-Module -DisableNameChecking $PSScriptRoot\..\"title-templates.psm1"
function Find-OptionalFeature() {
[CmdletBinding()]
[OutputType([Bool])]
param (
[Parameter(Mandatory = $true)]
[String] $OptionalFeature
)
If (Get-WindowsOptionalFeature -Online -FeatureName $OptionalFeature) {
return $true
} Else {
Write-Status -Types "?", $TweakType -Status "The $OptionalFeature optional feature was not found." -Warning
return $false
}
}
function Set-OptionalFeatureState() {
[CmdletBinding()]
param (
@ -31,11 +15,18 @@ function Set-OptionalFeatureState() {
[ScriptBlock] $CustomMessage
)
$Script:SecurityFilterOnEnable = @("IIS-*")
$Script:TweakType = "OptionalFeature"
Begin {
$Script:SecurityFilterOnEnable = @("IIS-*")
$Script:TweakType = "OptionalFeature"
}
Process {
ForEach ($OptionalFeature in $OptionalFeatures) {
If (!(Get-WindowsOptionalFeature -Online -FeatureName $OptionalFeature)) {
Write-Status -Types "?", $TweakType -Status "The $OptionalFeature optional feature was not found." -Warning
Continue
}
ForEach ($OptionalFeature in $OptionalFeatures) {
If (Find-OptionalFeature $OptionalFeature) {
If (($OptionalFeature -in $SecurityFilterOnEnable) -and ($Enabled)) {
Write-Status -Types "?", $TweakType -Status "Skipping $OptionalFeature ($((Get-WindowsOptionalFeature -Online -FeatureName $OptionalFeature).DisplayName)) to avoid a security vulnerability..." -Warning
Continue

@ -52,14 +52,13 @@ function Optimize-TaskScheduler() {
If ($Revert) {
Write-Status -Types "*", "TaskScheduler" -Status "Reverting the tweaks is set to '$Revert'." -Warning
$CustomMessage = { "Resetting the $ScheduledTask task as 'Ready'..." }
Set-ScheduledTaskState -Ready -ScheduledTask $DisableScheduledTasks -CustomMessage $CustomMessage
Set-ScheduledTaskState -State 'Enabled' -ScheduledTask $DisableScheduledTasks
} Else {
Set-ScheduledTaskState -Disabled -ScheduledTask $DisableScheduledTasks
Set-ScheduledTaskState -State 'Disabled' -ScheduledTask $DisableScheduledTasks
}
Write-Section -Text "Enabling Scheduled Tasks from Windows"
Set-ScheduledTaskState -Ready -ScheduledTask $EnableScheduledTasks
Set-ScheduledTaskState -State 'Enabled' -ScheduledTask $EnableScheduledTasks
}
function Main() {

@ -50,9 +50,6 @@ function Main() {
# List all Windows Packages:
#Get-WindowsPackage -Online | Select-Object -Property ReleaseType, PackageName, PackageState, InstallTime | Sort-Object ReleaseType, PackageState, PackageName | Format-Table
# List all Windows Capabilities:
#Get-WindowsCapability -Online | Select-Object -Property State, Name | Sort-Object State, Name | Format-Table
If (!$Revert) {
Optimize-WindowsFeaturesList # Disable useless features and Enable features claimed as Optional on Windows, but actually, they are useful
} Else {

@ -22,9 +22,9 @@ function Remove-CapabilitiesList() {
If ($Revert) {
Write-Status -Types "*", "Capability" -Status "Reverting the tweaks is set to '$Revert'." -Warning
Set-CapabilityState -Capabilities $DisableCapabilities -State Enabled
Set-CapabilityState -State Enabled -Capabilities $DisableCapabilities
} Else {
Set-CapabilityState -Capabilities $DisableCapabilities -State Disabled
Set-CapabilityState -State Disabled -Capabilities $DisableCapabilities
}
}

Loading…
Cancel
Save