mirror of
https://github.com/zoicware/RemoveWindowsAI.git
synced 2025-12-17 15:16:27 +01:00
add noninteractive mode
This commit is contained in:
@@ -1,5 +1,58 @@
|
||||
param(
|
||||
[switch]$EnableLogging,
|
||||
[switch]$nonInteractive,
|
||||
[ValidateSet('DisableRegKeys',
|
||||
'RemoveNudgesKeys',
|
||||
'DisableCopilotPolicies',
|
||||
'RemoveAppxPackages',
|
||||
'RemoveRecallFeature',
|
||||
'RemoveCBSPackages',
|
||||
'RemoveAIFiles',
|
||||
'HideAIComponents',
|
||||
'DisableRewrite',
|
||||
'RemoveRecallTasks')]
|
||||
[array]$Options,
|
||||
[switch]$AllOptions
|
||||
)
|
||||
|
||||
if ($nonInteractive) {
|
||||
if (!($AllOptions) -and (!$Options -or $Options.Count -eq 0)) {
|
||||
throw 'Non-Interactive mode was supplied without any options... Please use -Options or -AllOptions when using Non-Interactive Mode'
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) {
|
||||
Start-Process PowerShell.exe -ArgumentList ("-NoProfile -ExecutionPolicy Bypass -File `"{0}`"" -f $PSCommandPath) -Verb RunAs
|
||||
$arglist = "-NoProfile -ExecutionPolicy Bypass -File `"{0}`"" -f $PSCommandPath
|
||||
#pass the correct params if supplied
|
||||
if ($nonInteractive) {
|
||||
$arglist = $arglist + ' -nonInteractive'
|
||||
|
||||
if ($AllOptions) {
|
||||
$arglist = $arglist + ' -AllOptions'
|
||||
}
|
||||
|
||||
if ($Options -and $Options.count -ne 0) {
|
||||
#if options and alloptions is supplied just do all options
|
||||
if ($AllOptions) {
|
||||
#double check arglist has all options (should already have it)
|
||||
if (!($arglist -like '*-AllOptions*')) {
|
||||
$arglist = $arglist + ' -AllOptions'
|
||||
}
|
||||
}
|
||||
else {
|
||||
$arglist = $arglist + " -Options $Options"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($EnableLogging) {
|
||||
$arglist = $arglist + ' -EnableLogging'
|
||||
}
|
||||
|
||||
Start-Process PowerShell.exe -ArgumentList $arglist -Verb RunAs
|
||||
Exit
|
||||
}
|
||||
|
||||
@@ -656,7 +709,36 @@ Remove-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCac
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($nonInteractive) {
|
||||
if ($AllOptions) {
|
||||
Disable-Registry-Keys
|
||||
Remove-Copilot-Nudges-Keys
|
||||
Disable-Copilot-Policies
|
||||
Remove-AI-Appx-Packages
|
||||
Remove-Recall-Optional-Feature
|
||||
Remove-AI-CBS-Packages
|
||||
Remove-AI-Files
|
||||
Hide-AI-Components
|
||||
Disable-Notepad-Rewrite
|
||||
Remove-Recall-Tasks
|
||||
}
|
||||
else {
|
||||
#loop through options array and run desired tweaks
|
||||
switch ($Options) {
|
||||
'DisableRegKeys' { Disable-Registry-Keys }
|
||||
'RemoveNudgesKeys' { Remove-Copilot-Nudges-Keys }
|
||||
'DisableCopilotPolicies' { Disable-Copilot-Policies }
|
||||
'RemoveAppxPackages' { Remove-AI-Appx-Packages }
|
||||
'RemoveRecallFeature' { Remove-Recall-Optional-Feature }
|
||||
'RemoveCBSPackages' { Remove-AI-CBS-Packages }
|
||||
'RemoveAIFiles' { Remove-AI-Files }
|
||||
'HideAIComponents' { Hide-AI-Components }
|
||||
'DisableRewrite' { Disable-Notepad-Rewrite }
|
||||
'RemoveRecallTasks' { Remove-Recall-Tasks }
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
#===============================================================================
|
||||
#BEGIN UI
|
||||
@@ -796,7 +878,7 @@ foreach ($func in $functions) {
|
||||
|
||||
$description = $functionDescriptions[$funcName]
|
||||
[System.Windows.MessageBox]::Show($description, $funcName, [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Information)
|
||||
}.GetNewClosure())
|
||||
})
|
||||
|
||||
$optionContainer.Children.Add($checkbox) | Out-Null
|
||||
$optionContainer.Children.Add($infoButton) | Out-Null
|
||||
@@ -1091,6 +1173,7 @@ $bottomGrid.Children.Add($actionPanel) | Out-Null
|
||||
$mainGrid.Children.Add($bottomGrid) | Out-Null
|
||||
|
||||
$window.ShowDialog() | Out-Null
|
||||
}
|
||||
|
||||
#cleanup code
|
||||
try {
|
||||
@@ -1108,5 +1191,6 @@ if ($ogExecutionPolicy) {
|
||||
}
|
||||
|
||||
|
||||
$input = Read-Host 'Done! Press Any Key to Exit'
|
||||
if ($input) { exit }
|
||||
Write-Host 'Done! Press Any Key to Exit...' -ForegroundColor Green
|
||||
$Host.UI.RawUI.ReadKey() *>$null
|
||||
exit
|
||||
Reference in New Issue
Block a user