Functions/Invoke-Cleanmgr.ps1
function Invoke-CleanMgr { <# .SYNOPSIS Start "Disk Cleanup" (alos known as cleanmgr) in auto-mode with all options enabled. .DESCRIPTION Clean Manager allows to clean up your computer. This function starts the application "Disk Cleanup" (cleanmgr.exe) in auto-mode. It automatically tick all options in the application and start a cleaning. Options ticked: Microsoft Defender Antivirus, Windows upgrade log files, Downloaded Program Files, Temporary Internet Files, DirectX Shader Cache, Delivery Optimization Files, Device driver packages, Language Resource Files, Recyle Bin, Temporary files, Thumbnails, User file history. .EXAMPLE Invoke-CleanMgr .NOTES The application "Disk Cleanup" opens 2 Windows during the cleaning. It has no possibility to hide the 2 Windows during the process. #> [CmdletBinding()] Param() $isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") if ($isAdmin -ne $true) { Write-Output "Please run this script with admin privileges." Break } else { $FreespaceBefore = (Get-CimInstance -ClassName Win32_Logicaldisk -Filter "DeviceID='C:'" | Select-Object @{Name = "FreeSpace (GB)"; Expression = { [math]::Round($_.Freespace / 1GB, 2) } }) function Set-SageRun { param ( [int]$StateFlags ) $Number = $StateFlags try { New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Active Setup Temp Folders' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\BranchCache' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\D3D Shader Cache' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Delivery Optimization Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Diagnostic Data Viewer database files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Downloaded Program Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Internet Cache Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Language Pack' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Old ChkDsk Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Recycle Bin' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\RetailDemo Offline Content' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Service Pack Cleanup' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Setup Log Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\System error memory dump files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\System error minidump files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Sync Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Update Cleanup' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\User file versions' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Windows Defender' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Windows Error Reporting Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Temporary Setup Files' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 New-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Previous Installations' -PropertyType 'DWORD' -Force -Name "StateFlags$Number" -Value 0x2 } catch { "An error occured" } } $flag = 1234 Set-SageRun -StateFlags $flag Start-Process -FilePath CleanMgr.exe -ArgumentList "/sagerun:$flag" -NoNewWindow -PassThru do { Clear-Host "Waiting for cleanmgr to complete." Start-Sleep -Seconds 1 Clear-Host "Waiting for cleanmgr to complete.." Start-Sleep -Seconds 1 Clear-Host "Waiting for cleanmgr to complete..." Start-Sleep -Seconds 1 } while ((Get-Process | Where-Object { $_.Name -eq 'cleanmgr' }).Count -gt 0) $FreespaceAfter = (Get-CimInstance -ClassName Win32_Logicaldisk -Filter "DeviceID='C:'" | Select-Object @{Name = "FreeSpace (GB)"; Expression = { [math]::Round($_.Freespace / 1GB, 2) } }) "Free Space Before: {0}" -f $FreespaceBefore "Free Space After: {0}" -f $FreespaceAfter "The cleaning is complete!" } } |