Browse Source

Improved Scheduled tasks

master
Dmitry Nefedov 4 months ago
parent
commit
bc85d4e41d
  1. 48
      src/Sophia_Script_for_Windows_10/Module/Sophia.psm1
  2. 48
      src/Sophia_Script_for_Windows_10_LTSC_2019/Module/Sophia.psm1
  3. 48
      src/Sophia_Script_for_Windows_10_LTSC_2021/Module/Sophia.psm1
  4. 48
      src/Sophia_Script_for_Windows_10_PowerShell_7/Module/Sophia.psm1
  5. 52
      src/Sophia_Script_for_Windows_11/Module/Sophia.psm1
  6. 52
      src/Sophia_Script_for_Windows_11_PowerShell_7/Module/Sophia.psm1

48
src/Sophia_Script_for_Windows_10/Module/Sophia.psm1

@ -241,8 +241,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
WinCry = "$env:SystemRoot\TempCleaner.exe" WinCry = "$env:SystemRoot\TempCleaner.exe"
# https://hone.gg # https://hone.gg
Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe" Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe"
# https://github.com/ChrisTitusTech/winutil
winutil = "$env:TEMP\Winutil.log"
# https://www.youtube.com/watch?v=5NBqbUUB1Pk # https://www.youtube.com/watch?v=5NBqbUUB1Pk
WinClean = "$env:ProgramFiles\WinClean Plus Apps" WinClean = "$env:ProgramFiles\WinClean Plus Apps"
# https://github.com/Atlas-OS/Atlas # https://github.com/Atlas-OS/Atlas
@ -12264,11 +12262,14 @@ function CleanupTask
New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force
$CleanupTask = @" $CleanupTask = @"
# https://github.com/farag2/Sophia-Script-for-Windows
# https://t.me/sophia_chat
Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """$env:SystemRoot\System32\cleanmgr.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\cleanmgr.exe"
`$ProcessInfo.Arguments = """/sagerun:1337""" `$ProcessInfo.Arguments = "/sagerun:1337"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -12279,8 +12280,8 @@ Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """`$env:SystemRoot\System32\Dism.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\Dism.exe"
`$ProcessInfo.Arguments = """/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart""" `$ProcessInfo.Arguments = "/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -12289,10 +12290,28 @@ Start-Sleep -Seconds 3
`$Process.Start() | Out-Null `$Process.Start() | Out-Null
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1" -Value $CleanupTask -Encoding UTF8 -Force
# Create vbs script that will help us calling Windows_Cleanup.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$CleanupTask = @"
' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat
CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoProfile -NoLogo -WindowStyle Hidden -File %SystemRoot%\System32\Tasks\Sophia\Windows_Cleanup.ps1", 0
"@
# Save in UTF8 without BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs" -Value $CleanupTask -Encoding Default -Force
# Create "Windows Cleanup" task # Create "Windows Cleanup" task
# We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method # We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method
# https://github.com/PowerShell/PowerShell/issues/21377 # https://github.com/PowerShell/PowerShell/issues/21377
$Action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-WindowStyle Hidden -Command $CleanupTask" $Action = New-ScheduledTaskAction -Execute wscript.exe -Argument "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs"
$Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable $Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest $Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest
$Parameters = @{ $Parameters = @{
@ -12426,17 +12445,12 @@ while ([WinAPI.Focus]::GetFocusAssistState() -ne "OFF")
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage) [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage)
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM # Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force
# Replace here-string double quotes with single ones # Replace here-string double quotes with single ones
(Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force (Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force
# Create vbs script that will help us calling PS1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up # Create vbs script that will help us calling Windows_Cleanup_Notification.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$ToastNotification = @" $ToastNotification = @"
' https://github.com/farag2/Sophia-Script-for-Windows ' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat ' https://t.me/sophia_chat
@ -12463,12 +12477,18 @@ CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoPro
} }
Register-ScheduledTask @Parameters -Force Register-ScheduledTask @Parameters -Force
# Start Task Scheduler in the end if any scheduled task was created
$Script:ScheduledTasks = $true $Script:ScheduledTasks = $true
} }
"Delete" "Delete"
{ {
# Remove files first unless we cannot remove folder if there's no more tasks there # Remove files first unless we cannot remove folder if there's no more tasks there
Remove-Item -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs", "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Force -ErrorAction Ignore $Paths = @(
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1"
)
Remove-Item -Path $Paths -Force -ErrorAction Ignore
# Remove all old tasks # Remove all old tasks
# We have to use -ErrorAction Ignore in both cases, unless we get an error # We have to use -ErrorAction Ignore in both cases, unless we get an error

48
src/Sophia_Script_for_Windows_10_LTSC_2019/Module/Sophia.psm1

@ -241,8 +241,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
WinCry = "$env:SystemRoot\TempCleaner.exe" WinCry = "$env:SystemRoot\TempCleaner.exe"
# https://hone.gg # https://hone.gg
Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe" Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe"
# https://github.com/ChrisTitusTech/winutil
winutil = "$env:TEMP\Winutil.log"
# https://www.youtube.com/watch?v=5NBqbUUB1Pk # https://www.youtube.com/watch?v=5NBqbUUB1Pk
WinClean = "$env:ProgramFiles\WinClean Plus Apps" WinClean = "$env:ProgramFiles\WinClean Plus Apps"
# https://github.com/Atlas-OS/Atlas # https://github.com/Atlas-OS/Atlas
@ -9118,11 +9116,14 @@ function CleanupTask
New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force
$CleanupTask = @" $CleanupTask = @"
# https://github.com/farag2/Sophia-Script-for-Windows
# https://t.me/sophia_chat
Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """$env:SystemRoot\System32\cleanmgr.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\cleanmgr.exe"
`$ProcessInfo.Arguments = """/sagerun:1337""" `$ProcessInfo.Arguments = "/sagerun:1337"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -9133,8 +9134,8 @@ Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """`$env:SystemRoot\System32\Dism.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\Dism.exe"
`$ProcessInfo.Arguments = """/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart""" `$ProcessInfo.Arguments = "/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -9143,10 +9144,28 @@ Start-Sleep -Seconds 3
`$Process.Start() | Out-Null `$Process.Start() | Out-Null
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1" -Value $CleanupTask -Encoding UTF8 -Force
# Create vbs script that will help us calling Windows_Cleanup.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$CleanupTask = @"
' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat
CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoProfile -NoLogo -WindowStyle Hidden -File %SystemRoot%\System32\Tasks\Sophia\Windows_Cleanup.ps1", 0
"@
# Save in UTF8 without BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs" -Value $CleanupTask -Encoding Default -Force
# Create "Windows Cleanup" task # Create "Windows Cleanup" task
# We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method # We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method
# https://github.com/PowerShell/PowerShell/issues/21377 # https://github.com/PowerShell/PowerShell/issues/21377
$Action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-WindowStyle Hidden -Command $CleanupTask" $Action = New-ScheduledTaskAction -Execute wscript.exe -Argument "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs"
$Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable $Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest $Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest
$Parameters = @{ $Parameters = @{
@ -9280,17 +9299,12 @@ while ([WinAPI.Focus]::GetFocusAssistState() -ne "OFF")
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage) [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage)
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM # Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force
# Replace here-string double quotes with single ones # Replace here-string double quotes with single ones
(Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force (Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force
# Create vbs script that will help us calling PS1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up # Create vbs script that will help us calling Windows_Cleanup_Notification.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$ToastNotification = @" $ToastNotification = @"
' https://github.com/farag2/Sophia-Script-for-Windows ' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat ' https://t.me/sophia_chat
@ -9317,12 +9331,18 @@ CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoPro
} }
Register-ScheduledTask @Parameters -Force Register-ScheduledTask @Parameters -Force
# Start Task Scheduler in the end if any scheduled task was created
$Script:ScheduledTasks = $true $Script:ScheduledTasks = $true
} }
"Delete" "Delete"
{ {
# Remove files first unless we cannot remove folder if there's no more tasks there # Remove files first unless we cannot remove folder if there's no more tasks there
Remove-Item -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs", "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Force -ErrorAction Ignore $Paths = @(
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1"
)
Remove-Item -Path $Paths -Force -ErrorAction Ignore
# Remove all old tasks # Remove all old tasks
# We have to use -ErrorAction Ignore in both cases, unless we get an error # We have to use -ErrorAction Ignore in both cases, unless we get an error

48
src/Sophia_Script_for_Windows_10_LTSC_2021/Module/Sophia.psm1

@ -241,8 +241,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
WinCry = "$env:SystemRoot\TempCleaner.exe" WinCry = "$env:SystemRoot\TempCleaner.exe"
# https://hone.gg # https://hone.gg
Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe" Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe"
# https://github.com/ChrisTitusTech/winutil
winutil = "$env:TEMP\Winutil.log"
# https://www.youtube.com/watch?v=5NBqbUUB1Pk # https://www.youtube.com/watch?v=5NBqbUUB1Pk
WinClean = "$env:ProgramFiles\WinClean Plus Apps" WinClean = "$env:ProgramFiles\WinClean Plus Apps"
# https://github.com/Atlas-OS/Atlas # https://github.com/Atlas-OS/Atlas
@ -10251,11 +10249,14 @@ function CleanupTask
New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force
$CleanupTask = @" $CleanupTask = @"
# https://github.com/farag2/Sophia-Script-for-Windows
# https://t.me/sophia_chat
Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """$env:SystemRoot\System32\cleanmgr.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\cleanmgr.exe"
`$ProcessInfo.Arguments = """/sagerun:1337""" `$ProcessInfo.Arguments = "/sagerun:1337"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -10266,8 +10267,8 @@ Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """`$env:SystemRoot\System32\Dism.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\Dism.exe"
`$ProcessInfo.Arguments = """/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart""" `$ProcessInfo.Arguments = "/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -10276,10 +10277,28 @@ Start-Sleep -Seconds 3
`$Process.Start() | Out-Null `$Process.Start() | Out-Null
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1" -Value $CleanupTask -Encoding UTF8 -Force
# Create vbs script that will help us calling Windows_Cleanup.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$CleanupTask = @"
' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat
CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoProfile -NoLogo -WindowStyle Hidden -File %SystemRoot%\System32\Tasks\Sophia\Windows_Cleanup.ps1", 0
"@
# Save in UTF8 without BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs" -Value $CleanupTask -Encoding Default -Force
# Create "Windows Cleanup" task # Create "Windows Cleanup" task
# We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method # We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method
# https://github.com/PowerShell/PowerShell/issues/21377 # https://github.com/PowerShell/PowerShell/issues/21377
$Action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-WindowStyle Hidden -Command $CleanupTask" $Action = New-ScheduledTaskAction -Execute wscript.exe -Argument "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs"
$Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable $Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest $Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest
$Parameters = @{ $Parameters = @{
@ -10413,17 +10432,12 @@ while ([WinAPI.Focus]::GetFocusAssistState() -ne "OFF")
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage) [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage)
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM # Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force
# Replace here-string double quotes with single ones # Replace here-string double quotes with single ones
(Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force (Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force
# Create vbs script that will help us calling PS1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up # Create vbs script that will help us calling Windows_Cleanup_Notification.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$ToastNotification = @" $ToastNotification = @"
' https://github.com/farag2/Sophia-Script-for-Windows ' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat ' https://t.me/sophia_chat
@ -10450,12 +10464,18 @@ CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoPro
} }
Register-ScheduledTask @Parameters -Force Register-ScheduledTask @Parameters -Force
# Start Task Scheduler in the end if any scheduled task was created
$Script:ScheduledTasks = $true $Script:ScheduledTasks = $true
} }
"Delete" "Delete"
{ {
# Remove files first unless we cannot remove folder if there's no more tasks there # Remove files first unless we cannot remove folder if there's no more tasks there
Remove-Item -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs", "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Force -ErrorAction Ignore $Paths = @(
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1"
)
Remove-Item -Path $Paths -Force -ErrorAction Ignore
# Remove all old tasks # Remove all old tasks
# We have to use -ErrorAction Ignore in both cases, unless we get an error # We have to use -ErrorAction Ignore in both cases, unless we get an error

48
src/Sophia_Script_for_Windows_10_PowerShell_7/Module/Sophia.psm1

@ -240,8 +240,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
WinCry = "$env:SystemRoot\TempCleaner.exe" WinCry = "$env:SystemRoot\TempCleaner.exe"
# https://hone.gg # https://hone.gg
Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe" Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe"
# https://github.com/ChrisTitusTech/winutil
winutil = "$env:TEMP\Winutil.log"
# https://www.youtube.com/watch?v=5NBqbUUB1Pk # https://www.youtube.com/watch?v=5NBqbUUB1Pk
WinClean = "$env:ProgramFiles\WinClean Plus Apps" WinClean = "$env:ProgramFiles\WinClean Plus Apps"
# https://github.com/Atlas-OS/Atlas # https://github.com/Atlas-OS/Atlas
@ -12280,11 +12278,14 @@ function CleanupTask
New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force
$CleanupTask = @" $CleanupTask = @"
# https://github.com/farag2/Sophia-Script-for-Windows
# https://t.me/sophia_chat
Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """$env:SystemRoot\System32\cleanmgr.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\cleanmgr.exe"
`$ProcessInfo.Arguments = """/sagerun:1337""" `$ProcessInfo.Arguments = "/sagerun:1337"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -12295,8 +12296,8 @@ Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """`$env:SystemRoot\System32\Dism.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\Dism.exe"
`$ProcessInfo.Arguments = """/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart""" `$ProcessInfo.Arguments = "/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -12305,10 +12306,28 @@ Start-Sleep -Seconds 3
`$Process.Start() | Out-Null `$Process.Start() | Out-Null
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1" -Value $CleanupTask -Encoding UTF8 -Force
# Create vbs script that will help us calling Windows_Cleanup.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$CleanupTask = @"
' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat
CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoProfile -NoLogo -WindowStyle Hidden -File %SystemRoot%\System32\Tasks\Sophia\Windows_Cleanup.ps1", 0
"@
# Save in UTF8 without BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs" -Value $CleanupTask -Encoding utf8NoBOM -Force
# Create "Windows Cleanup" task # Create "Windows Cleanup" task
# We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method # We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method
# https://github.com/PowerShell/PowerShell/issues/21377 # https://github.com/PowerShell/PowerShell/issues/21377
$Action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-WindowStyle Hidden -Command $CleanupTask" $Action = New-ScheduledTaskAction -Execute wscript.exe -Argument "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs"
$Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable $Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest $Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest
$Parameters = @{ $Parameters = @{
@ -12442,17 +12461,12 @@ while ([WinAPI.Focus]::GetFocusAssistState() -ne "OFF")
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage) [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage)
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM # Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding utf8BOM -Force Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding utf8BOM -Force
# Replace here-string double quotes with single ones # Replace here-string double quotes with single ones
(Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM -Force (Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM -Force
# Create vbs script that will help us calling PS1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up # Create vbs script that will help us calling Windows_Cleanup_Notification.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$ToastNotification = @" $ToastNotification = @"
' https://github.com/farag2/Sophia-Script-for-Windows ' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat ' https://t.me/sophia_chat
@ -12479,12 +12493,18 @@ CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoPro
} }
Register-ScheduledTask @Parameters -Force Register-ScheduledTask @Parameters -Force
# Start Task Scheduler in the end if any scheduled task was created
$Script:ScheduledTasks = $true $Script:ScheduledTasks = $true
} }
"Delete" "Delete"
{ {
# Remove files first unless we cannot remove folder if there's no more tasks there # Remove files first unless we cannot remove folder if there's no more tasks there
Remove-Item -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs", "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Force -ErrorAction Ignore $Paths = @(
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1"
)
Remove-Item -Path $Paths -Force -ErrorAction Ignore
# Remove all old tasks # Remove all old tasks
# We have to use -ErrorAction Ignore in both cases, unless we get an error # We have to use -ErrorAction Ignore in both cases, unless we get an error

52
src/Sophia_Script_for_Windows_11/Module/Sophia.psm1

@ -227,8 +227,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
WinCry = "$env:SystemRoot\TempCleaner.exe" WinCry = "$env:SystemRoot\TempCleaner.exe"
# https://hone.gg # https://hone.gg
Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe" Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe"
# https://github.com/ChrisTitusTech/winutil
winutil = "$env:TEMP\Winutil.log"
# https://www.youtube.com/watch?v=5NBqbUUB1Pk # https://www.youtube.com/watch?v=5NBqbUUB1Pk
WinClean = "$env:ProgramFiles\WinClean Plus Apps" WinClean = "$env:ProgramFiles\WinClean Plus Apps"
# https://github.com/Atlas-OS/Atlas # https://github.com/Atlas-OS/Atlas
@ -11499,11 +11497,14 @@ function CleanupTask
New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force
$CleanupTask = @" $CleanupTask = @"
# https://github.com/farag2/Sophia-Script-for-Windows
# https://t.me/sophia_chat
Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """$env:SystemRoot\System32\cleanmgr.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\cleanmgr.exe"
`$ProcessInfo.Arguments = """/sagerun:1337""" `$ProcessInfo.Arguments = "/sagerun:1337"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -11514,8 +11515,8 @@ Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """`$env:SystemRoot\System32\Dism.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\Dism.exe"
`$ProcessInfo.Arguments = """/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart""" `$ProcessInfo.Arguments = "/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -11524,10 +11525,28 @@ Start-Sleep -Seconds 3
`$Process.Start() | Out-Null `$Process.Start() | Out-Null
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1" -Value $CleanupTask -Encoding UTF8 -Force
# Create vbs script that will help us calling Windows_Cleanup.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$CleanupTask = @"
' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat
CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoProfile -NoLogo -WindowStyle Hidden -File %SystemRoot%\System32\Tasks\Sophia\Windows_Cleanup.ps1", 0
"@
# Save in UTF8 without BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs" -Value $CleanupTask -Encoding Default -Force
# Create "Windows Cleanup" task # Create "Windows Cleanup" task
# We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method # We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method
# https://github.com/PowerShell/PowerShell/issues/21377 # https://github.com/PowerShell/PowerShell/issues/21377
$Action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-WindowStyle Hidden -Command $CleanupTask" $Action = New-ScheduledTaskAction -Execute wscript.exe -Argument "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs"
$Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable $Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest $Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest
$Parameters = @{ $Parameters = @{
@ -11661,17 +11680,12 @@ while ([WinAPI.Focus]::GetFocusAssistState() -ne "OFF")
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage) [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage)
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM # Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding UTF8 -Force
# Replace here-string double quotes with single ones # Replace here-string double quotes with single ones
(Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force (Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding UTF8 -Force
# Create vbs script that will help us calling PS1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up # Create vbs script that will help us calling Windows_Cleanup_Notification.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$ToastNotification = @" $ToastNotification = @"
' https://github.com/farag2/Sophia-Script-for-Windows ' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat ' https://t.me/sophia_chat
@ -11698,12 +11712,18 @@ CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoPro
} }
Register-ScheduledTask @Parameters -Force Register-ScheduledTask @Parameters -Force
# Start Task Scheduler in the end if any scheduled task was created
$Script:ScheduledTasks = $true $Script:ScheduledTasks = $true
} }
"Delete" "Delete"
{ {
# Remove files first unless we cannot remove folder if there's no more tasks there # Remove files first unless we cannot remove folder if there's no more tasks there
Remove-Item -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs", "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Force -ErrorAction Ignore $Paths = @(
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1"
)
Remove-Item -Path $Paths -Force -ErrorAction Ignore
# Remove all old tasks # Remove all old tasks
# We have to use -ErrorAction Ignore in both cases, unless we get an error # We have to use -ErrorAction Ignore in both cases, unless we get an error
@ -13090,7 +13110,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)] [Parameter(Mandatory = $false)]
[ValidateScript({ [ValidateScript({
# isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $SecondaryDNS) ((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $SecondaryDNS)
})] })]
[string] [string]
@ -13098,7 +13118,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)] [Parameter(Mandatory = $false)]
[ValidateScript({ [ValidateScript({
# isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $PrimaryDNS) ((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $PrimaryDNS)
})] })]
[string] [string]

52
src/Sophia_Script_for_Windows_11_PowerShell_7/Module/Sophia.psm1

@ -226,8 +226,6 @@ public static extern bool SetForegroundWindow(IntPtr hWnd);
WinCry = "$env:SystemRoot\TempCleaner.exe" WinCry = "$env:SystemRoot\TempCleaner.exe"
# https://hone.gg # https://hone.gg
Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe" Hone = "$env:LOCALAPPDATA\Programs\Hone\Hone.exe"
# https://github.com/ChrisTitusTech/winutil
winutil = "$env:TEMP\Winutil.log"
# https://www.youtube.com/watch?v=5NBqbUUB1Pk # https://www.youtube.com/watch?v=5NBqbUUB1Pk
WinClean = "$env:ProgramFiles\WinClean Plus Apps" WinClean = "$env:ProgramFiles\WinClean Plus Apps"
# https://github.com/Atlas-OS/Atlas # https://github.com/Atlas-OS/Atlas
@ -11515,11 +11513,14 @@ function CleanupTask
New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force New-ItemProperty -Path Registry::HKEY_CLASSES_ROOT\WindowsCleanup\shell\open\command -Name "(default)" -PropertyType String -Value 'powershell.exe -Command "& {Start-ScheduledTask -TaskPath ''\Sophia\'' -TaskName ''Windows Cleanup''}"' -Force
$CleanupTask = @" $CleanupTask = @"
# https://github.com/farag2/Sophia-Script-for-Windows
# https://t.me/sophia_chat
Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """$env:SystemRoot\System32\cleanmgr.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\cleanmgr.exe"
`$ProcessInfo.Arguments = """/sagerun:1337""" `$ProcessInfo.Arguments = "/sagerun:1337"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -11530,8 +11531,8 @@ Get-Process -Name cleanmgr, Dism, DismHost | Stop-Process -Force
Start-Sleep -Seconds 3 Start-Sleep -Seconds 3
`$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo `$ProcessInfo = New-Object -TypeName System.Diagnostics.ProcessStartInfo
`$ProcessInfo.FileName = """`$env:SystemRoot\System32\Dism.exe""" `$ProcessInfo.FileName = "`$env:SystemRoot\System32\Dism.exe"
`$ProcessInfo.Arguments = """/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart""" `$ProcessInfo.Arguments = "/Online /English /Cleanup-Image /StartComponentCleanup /NoRestart"
`$ProcessInfo.UseShellExecute = `$true `$ProcessInfo.UseShellExecute = `$true
`$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized `$ProcessInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Minimized
@ -11540,10 +11541,28 @@ Start-Sleep -Seconds 3
`$Process.Start() | Out-Null `$Process.Start() | Out-Null
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1" -Value $CleanupTask -Encoding UTF8 -Force
# Create vbs script that will help us calling Windows_Cleanup.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$CleanupTask = @"
' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat
CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoProfile -NoLogo -WindowStyle Hidden -File %SystemRoot%\System32\Tasks\Sophia\Windows_Cleanup.ps1", 0
"@
# Save in UTF8 without BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs" -Value $CleanupTask -Encoding utf8NoBOM -Force
# Create "Windows Cleanup" task # Create "Windows Cleanup" task
# We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method # We cannot create a schedule task if %COMPUTERNAME% is equal to %USERNAME%, so we have to use a "$env:COMPUTERNAME\$env:USERNAME" method
# https://github.com/PowerShell/PowerShell/issues/21377 # https://github.com/PowerShell/PowerShell/issues/21377
$Action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-WindowStyle Hidden -Command $CleanupTask" $Action = New-ScheduledTaskAction -Execute wscript.exe -Argument "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.vbs"
$Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable $Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
$Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest $Principal = New-ScheduledTaskPrincipal -UserId "$env:COMPUTERNAME\$env:USERNAME" -RunLevel Highest
$Parameters = @{ $Parameters = @{
@ -11677,17 +11696,12 @@ while ([WinAPI.Focus]::GetFocusAssistState() -ne "OFF")
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage) [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sophia").Show(`$ToastMessage)
"@ "@
# Save script to be able to call them from VBS file
if (-not (Test-Path -Path $env:SystemRoot\System32\Tasks\Sophia))
{
New-Item -Path $env:SystemRoot\System32\Tasks\Sophia -ItemType Directory -Force
}
# Save in UTF8 with BOM # Save in UTF8 with BOM
Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding utf8BOM -Force Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Value $ToastNotification -Encoding utf8BOM -Force
# Replace here-string double quotes with single ones # Replace here-string double quotes with single ones
(Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM -Force (Get-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM).Replace('@""', '@"').Replace('""@', '"@') | Set-Content -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Encoding utf8BOM -Force
# Create vbs script that will help us calling PS1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up # Create vbs script that will help us calling Windows_Cleanup_Notification.ps1 script silently, without interrupting system from Focus Assist mode turned on, when a powershell.exe console pops up
$ToastNotification = @" $ToastNotification = @"
' https://github.com/farag2/Sophia-Script-for-Windows ' https://github.com/farag2/Sophia-Script-for-Windows
' https://t.me/sophia_chat ' https://t.me/sophia_chat
@ -11714,12 +11728,18 @@ CreateObject("Wscript.Shell").Run "powershell.exe -ExecutionPolicy Bypass -NoPro
} }
Register-ScheduledTask @Parameters -Force Register-ScheduledTask @Parameters -Force
# Start Task Scheduler in the end if any scheduled task was created
$Script:ScheduledTasks = $true $Script:ScheduledTasks = $true
} }
"Delete" "Delete"
{ {
# Remove files first unless we cannot remove folder if there's no more tasks there # Remove files first unless we cannot remove folder if there's no more tasks there
Remove-Item -Path "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs", "$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1" -Force -ErrorAction Ignore $Paths = @(
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.vbs",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup_Notification.ps1",
"$env:SystemRoot\System32\Tasks\Sophia\Windows_Cleanup.ps1"
)
Remove-Item -Path $Paths -Force -ErrorAction Ignore
# Remove all old tasks # Remove all old tasks
# We have to use -ErrorAction Ignore in both cases, unless we get an error # We have to use -ErrorAction Ignore in both cases, unless we get an error
@ -13106,7 +13126,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)] [Parameter(Mandatory = $false)]
[ValidateScript({ [ValidateScript({
# isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $SecondaryDNS) ((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $SecondaryDNS)
})] })]
[string] [string]
@ -13114,7 +13134,7 @@ function DNSoverHTTPS
[Parameter(Mandatory = $false)] [Parameter(Mandatory = $false)]
[ValidateScript({ [ValidateScript({
# isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS # Isolate IPv4 IP addresses and check if $PrimaryDNS is not equal to $SecondaryDNS
((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $PrimaryDNS) ((@((Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DohWellKnownServers).PSChildName) | Where-Object -FilterScript {($_ -as [IPAddress]).AddressFamily -ne "InterNetworkV6"}) -contains $_) -and ($_ -ne $PrimaryDNS)
})] })]
[string] [string]

Loading…
Cancel
Save