<# .SYNOPSIS Windows script to cleanup locations with known disk overhead files .DESCRIPTION - Cleans temporary files, old software packages, logs and recycle bins .EXAMPLE # Run script locally C:\PS> .\Disk-Cleanup.ps1 # Run script remotely C:\PS> Set-ExecutionPolicy -ExecutionPolicy Bypass C:\PS> iex "& { $(irm https://wobig.tech/downloads/scripts/Disk-Cleanup.ps1) }" .NOTES Author: Rick Wobig Source: https://wobig.tech/downloads/scripts/Disk-Cleanup.ps1 #> # region Script Execution [WindowsSystem]::DisableWua() $cleanPaths = @( "C:\Windows\SoftwareDistribution\*", "C:\Windows\Temp\*", "C:\Windows\prefetch\*", "C:\inetpub\logs\LogFiles\*", "C:\Users\*\AppData\Local\Temp", "C:\Users\*\AppData\Local\Microsoft\Windows\Temporary Internet Files", "C:\Users\*\AppData\Local\Microsoft\Windows\History\*", "C:\Users\*\AppData\Local\Microsoft\Windows\INetCookies\*" ) foreach ($path in $cleanPaths){ [Cleanup]::CleanPath($path) } [Cleanup]::EmptyRecycleBins() [WindowsSystem]::EnableWua() # endregion # region Classes class WindowsSystem { static [void] DisableWua(){ Get-Service -Name wuauserv | Stop-Service -Force -verbose -ErrorAction SilentlyContinue } static [void] EnableWua(){ Get-Service -Name wuauserv | Start-Service -Verbose } } class Cleanup { static [void] CleanPath($path){ Get-ChildItem $path -Recurse -Force -verbose -ErrorAction SilentlyContinue | Remove-Item -Force -Verbose -Recurse -ErrorAction SilentlyContinue } static [void] EmptyRecycleBins(){ $disks = Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" foreach ($disk in $disks) { $rbpathnew = "$($disk.DeviceID)\'Recycle.Bin" if (Test-Path $rbpathnew) { cmd /c "rd /s /q $rbpathnew" } } } } # endregion