⚡ PowerShell 5.1+
Clean Up The system-wide Windows Temp folder
Reports the size of the system-wide Windows Temp folder and optionally clears it out. Dry-run by default.
Remove-OldWindowsTemp.ps1
<#
.SYNOPSIS
Cleans up the system-wide Windows Temp folder.
.DESCRIPTION
Reports the size of the system-wide Windows Temp folder and, with -DeleteFiles, removes its
contents. Dry-run by default (reports only) so you can see what
would be freed before anything is deleted.
.PARAMETER DeleteFiles
Actually delete the contents. Without this switch, the script only reports.
.EXAMPLE
.\Remove-OldWindowsTemp.ps1
.EXAMPLE
.\Remove-OldWindowsTemp.ps1 -DeleteFiles
#>
[CmdletBinding(SupportsShouldProcess)]
param(
[switch]$DeleteFiles
)
$targetPath = 'C:\Windows\Temp'
if (-not (Test-Path $targetPath)) {
Write-Host "$targetPath does not exist on this machine." -ForegroundColor Yellow
return
}
$items = Get-ChildItem -Path $targetPath -Force -ErrorAction SilentlyContinue
$totalSize = ($items | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum
Write-Host "$targetPath contains $($items.Count) item(s), $([math]::Round(($totalSize / 1MB), 2)) MB" -ForegroundColor Cyan
if ($DeleteFiles) {
foreach ($item in $items) {
if ($PSCmdlet.ShouldProcess($item.FullName, 'Delete')) {
Remove-Item -Path $item.FullName -Recurse -Force -ErrorAction SilentlyContinue
}
}
Write-Host 'Cleanup complete.' -ForegroundColor Green
} else {
Write-Host 'Run again with -DeleteFiles to actually remove these items.' -ForegroundColor DarkGray
}