Calling Powershell as Admin and setting Execution Policy to Bypass to avoid Cannot run Scripts error
param ([switch]$Elevated)
function CheckAdmin {
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
if ((CheckAdmin) -eq $false) {
if ($elevated) {
# could not elevate, quit
}
else {
# Detecting Powershell (powershell.exe) or Powershell Core (pwsh), will return true if Powershell Core (pwsh)
if ($IsCoreCLR) { $PowerShellCmdLine = “pwsh.exe” } else { $PowerShellCmdLine = “powershell.exe” }
$CommandLine = “-noprofile -ExecutionPolicy Bypass -File "" + $MyInvocation.MyCommand.Path + "
” ” + $MyInvocation.UnboundArguments + ‘ -Elevated’
Start-Process “$PSHOME\$PowerShellCmdLine” -Verb RunAs -ArgumentList $CommandLine
}
Exit
}
Rename Title Window
$host.ui.RawUI.WindowTitle = “Clean Browser Temp Files”
Function Cleanup {
# Set Date for Log
$LogDate = Get-Date -Format “MM-d-yy-HHmm”
# Ask for confirmation to delete users Downloaded files - Anything older than 90 days
$DeleteOldDownloads = Read-Host "Would you like to delete files older than 90 days in the Downloads folder for All Users? (Y/N)"
# Set Deletion Date for Downloads Folder
$DelDownloadsDate = (Get-Date).AddDays(-90)
# Set Deletion Date for Inetpub Log Folder
$DelInetLogDate = (Get-Date).AddDays(-30)
# Set Deletion Date for System32 Log Folder
$System32LogDate = (Get-Date).AddMonths(-2)
# Set Deletion Date for Azure Logs Folder
$DelAZLogDate = (Get-Date).AddDays(-7)
# Set Deletion Date for Office File Cache Folder
$DelOfficeCacheDate = (Get-Date).AddDays(-7)
# Set Deletion Date for LFSAgent Logs Folder
$DelLFSAGentLogDate = (Get-Date).AddDays(-30)
# Set Deletion Date for SotiMobicontroller Logs
$DelSotiLogDate = (Get-Date).AddYears(-1)
# Ask for Confirmation to Empty Recycle Bin for All Users
$CleanBin = Read-Host "Would you like to empty the Recycle Bin for All Users? (Y/N)"
# Get the size of the Windows Updates folder (SoftwareDistribution)
$WUfoldersize = (Get-ChildItem "$env:windir\SoftwareDistribution" -Recurse | Measure-Object Length -s).sum / 1Gb
# Ask the user if they would like to clean the Windows Update folder
if ($WUfoldersize -gt 1.5) {
Write-Host "The Windows Update folder is" ("{0:N2} GB" -f $WUFoldersize)
$CleanWU = Read-Host "Do you want clean the Software Distribution folder and reset Windows Updates? (Y/N)"
}
# Get Disk Size
$Before = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object SystemName,
@{ Name = "Drive" ; Expression = { ( $_.DeviceID ) } },
@{ Name = "Size (GB)" ; Expression = { "{0:N1}" -f ( $_.Size / 1gb) } },
@{ Name = "FreeSpace (GB)" ; Expression = { "{0:N1}" -f ( $_.Freespace / 1gb ) } },
@{ Name = "PercentFree" ; Expression = { "{0:P1}" -f ( $_.FreeSpace / $_.Size ) } } |
Format-Table -AutoSize | Out-String
# Define log file location
$Cleanuplog = "$env:USERPROFILE\Cleanup$LogDate.log"
# Start Logging
Start-Transcript -Path "$CleanupLog"
# Create list of users
Write-Host -ForegroundColor Green "Getting the list of Users`n"
$Users = Get-ChildItem "C:\Users" | Select-Object Name
$users = $Users.Name
# Begin!
Write-Host -ForegroundColor Green "Beginning Script...`n"
# Clear Firefox Cache
Write-Host -ForegroundColor Green "Clearing Firefox Cache`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles") {
Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\thumbnails\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\cookies.sqlite" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\webappsstore.sqlite" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\chromeappsstore.sqlite" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Mozilla\Firefox\Profiles\*\OfflineCache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Clear Google Chrome
Write-Host -ForegroundColor Green "Clearing Google Chrome Cache`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data") {
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cookies" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
# Comment out the following line to remove the Chrome Write Font Cache too.
# Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\Default\ChromeDWriteFontCache" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
# Check Chrome Profiles. It looks as though when creating profiles, it just numbers them Profile 1, Profile 2 etc.
$Profiles = Get-ChildItem -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data" | Select-Object Name | Where-Object Name -Like "Profile*"
foreach ($Account in $Profiles) {
$Account = $Account.Name
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cache2\entries\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cookies" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\Cookies-Journal" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Google\Chrome\User Data\$Account\JumpListIconsOld" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Clear Internet Explorer & Edge
Write-Host -ForegroundColor Yellow "Clearing Internet Explorer & Edge Cache`n"
Foreach ($user in $Users) {
Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\INetCache\* " -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\WebCache\* " -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
# Clear Chromium
Write-Host -ForegroundColor Yellow "Clearing Chromium Cache`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\AppData\Local\Chromium") {
Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\GPUCache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Media Cache" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Pepper Data" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Chromium\User Data\Default\Application Cache" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Clear Opera
Write-Host -ForegroundColor Yellow "Clearing Opera Cache`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\AppData\Local\Opera Software") {
Remove-Item -Path "C:\Users\$user\AppData\Local\Opera Software\Opera Stable\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Clear Yandex
Write-Host -ForegroundColor Yellow "Clearing Yandex Cache`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\AppData\Local\Yandex") {
Remove-Item -Path "C:\Users\$user\AppData\Local\Yandex\YandexBrowser\User Data\Default\Cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Yandex\YandexBrowser\User Data\Default\GPUCache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Yandex\YandexBrowser\User Data\Default\Media Cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Yandex\YandexBrowser\User Data\Default\Pepper Data\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Yandex\YandexBrowser\User Data\Default\Application Cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Yandex\YandexBrowser\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Clear User Temp Folders
Write-Host -ForegroundColor Yellow "Clearing User Temp Folders`n"
Foreach ($user in $Users) {
Remove-Item -Path "C:\Users\$user\AppData\Local\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\WER\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Windows\AppCache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\CrashDumps\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
# Clear Windows Temp Folder
Write-Host -ForegroundColor Yellow "Clearing Windows Temp Folder`n"
Foreach ($user in $Users) {
Remove-Item -Path "C:\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "$env:windir\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "$env:windir\Logs\CBS\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "$env:ProgramData\Microsoft\Windows\WER\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
# Only grab log files sitting in the root of the Logfiles directory
$Sys32Files = Get-ChildItem -Path "$env:windir\System32\LogFiles" | Where-Object { ($_.name -like "*.log") -and ($_.lastwritetime -lt $System32LogDate) }
foreach ($File in $Sys32Files) {
Remove-Item -Path "$env:windir\System32\LogFiles\$($file.name)" -Force -ErrorAction SilentlyContinue -Verbose
}
}
Write-Host -ForegroundColor Yellow "Done...`n"
# Clear Inetpub Logs Folder
if (Test-Path "C:\inetpub\logs\LogFiles\") {
Write-Host -ForegroundColor Yellow "Clearing Inetpub Logs Folder`n"
$Folders = Get-ChildItem -Path "C:\inetpub\logs\LogFiles\" | Select-Object Name
foreach ($Folder in $Folders) {
$folder = $Folder.Name
Remove-Item -Path "C:\inetpub\logs\LogFiles\$Folder\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose | Where-Object LastWriteTime -LT $DelInetLogDate
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Delete Microsoft Teams Previous Version files
Write-Host -ForegroundColor Yellow "Clearing Teams Previous version`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\AppData\Local\Microsoft\Teams\") {
Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Teams\previous\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\AppData\Local\Microsoft\Teams\stage\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
}
Write-Host -ForegroundColor Yellow "Done...`n"
# Delete SnagIt Crash Dump files
Write-Host -ForegroundColor Yellow "Clearing SnagIt Crash Dumps`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\AppData\Local\TechSmith\SnagIt") {
Remove-Item -Path "C:\Users\$user\AppData\Local\TechSmith\SnagIt\CrashDumps\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
}
Write-Host -ForegroundColor Yellow "Done...`n"
# Clear Dropbox
Write-Host -ForegroundColor Yellow "Clearing Dropbox Cache`n"
Foreach ($user in $Users) {
if (Test-Path "C:\Users\$user\Dropbox\") {
Remove-Item -Path "C:\Users\$user\Dropbox\.dropbox.cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Remove-Item -Path "C:\Users\$user\Dropbox*\.dropbox.cache\*" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
}
}
Write-Host -ForegroundColor Yellow "Done...`n"
# Clear HP Support Assistant Installation Folder
if (Test-Path "C:\swsetup") {
Remove-Item -Path "C:\swsetup" -Force -ErrorAction SilentlyContinue -Verbose
}
# Delete files older than 90 days from Downloads folder
if ($DeleteOldDownloads -eq 'Y') {
Write-Host -ForegroundColor Yellow "Deleting files older than 90 days from User Downloads folder`n"
Foreach ($user in $Users) {
$UserDownloads = "C:\Users\$user\Downloads"
$OldFiles = Get-ChildItem -Path "$UserDownloads\" -Recurse -File -ErrorAction SilentlyContinue | Where-Object LastWriteTime -LT $DelDownloadsDate
foreach ($file in $OldFiles) {
Remove-Item -Path "$UserDownloads\$file" -Force -ErrorAction SilentlyContinue -Verbose
}
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Delete files older than 7 days from Azure Log folder
if (Test-Path "C:\WindowsAzure\Logs") {
Write-Host -ForegroundColor Yellow "Deleting files older than 7 days from Azure Log folder`n"
$AzureLogs = "C:\WindowsAzure\Logs"
$OldFiles = Get-ChildItem -Path "$AzureLogs\" -Recurse -File -ErrorAction SilentlyContinue | Where-Object LastWriteTime -LT $DelAZLogDate
foreach ($file in $OldFiles) {
Remove-Item -Path "$AzureLogs\$file" -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Delete files older than 7 days from Office Cache Folder
Write-Host -ForegroundColor Yellow "Clearing Office Cache Folder`n"
Foreach ($user in $Users) {
$officecache = "C:\Users\$user\AppData\Local\Microsoft\Office\16.0\GrooveFileCache"
if (Test-Path $officecache) {
$OldFiles = Get-ChildItem -Path "$officecache\" -Recurse -File -ErrorAction SilentlyContinue | Where-Object LastWriteTime -LT $DelOfficeCacheDate
foreach ($file in $OldFiles) {
Remove-Item -Path "$officecache\$file" -Force -ErrorAction SilentlyContinue -Verbose
}
}
}
Write-Host -ForegroundColor Yellow "Done...`n"
# Delete files older than 30 days from LFSAgent Log folder https://www.lepide.com/
if (Test-Path "$env:windir\LFSAgent\Logs") {
Write-Host -ForegroundColor Yellow "Deleting files older than 30 days from LFSAgent Log folder`n"
$LFSAgentLogs = "$env:windir\LFSAgent\Logs"
$OldFiles = Get-ChildItem -Path "$LFSAgentLogs\" -Recurse -File -ErrorAction SilentlyContinue | Where-Object LastWriteTime -LT $DelLFSAGentLogDate
foreach ($file in $OldFiles) {
Remove-Item -Path "$LFSAgentLogs\$file" -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Delete SOTI MobiController Log files older than 1 year
if (Test-Path "C:\Program Files (x86)\SOTI\MobiControl") {
Write-Host -ForegroundColor Yellow "Deleting SOTI MobiController Log files older than 1 year`n"
$SotiLogFiles = Get-ChildItem -Path "C:\Program Files (x86)\SOTI\MobiControl" | Where-Object { ($_.name -like "*Device*.log" -or $_.name -like "*Server*.log" ) -and ($_.lastwritetime -lt $DelSotiLogDate) }
foreach ($File in $SotiLogFiles) {
Remove-Item -Path "C:\Program Files (x86)\SOTI\MobiControl\$($file.name)" -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Delete old Cylance Log files
if (Test-Path "C:\Program Files\Cylance\Desktop") {
Write-Host -ForegroundColor Yellow "Deleting Old Cylance Log files`n"
$OldCylanceLogFiles = Get-ChildItem -Path "C:\Program Files\Cylance\Desktop" | Where-Object name -Like "cylog-*.log"
foreach ($File in $OldCylanceLogFiles) {
Remove-Item -Path "C:\Program Files\Cylance\Desktop\$($file.name)" -Force -ErrorAction SilentlyContinue -Verbose
}
Write-Host -ForegroundColor Yellow "Done...`n"
}
# Delete Windows Updates Folder (SoftwareDistribution) and reset the Windows Update Service
if ($CleanWU -eq 'Y') {
Write-Host -ForegroundColor Yellow "Restarting Windows Update Service and Deleting SoftwareDistribution Folder`n"
# Stop the Windows Update service
try {
Stop-Service -Name wuauserv
}
catch {
$ErrorMessage = $_.Exception.Message
Write-Warning "$ErrorMessage"
}
# Delete the folder
Remove-Item "$env:windir\SoftwareDistribution" -Recurse -Force -ErrorAction SilentlyContinue -Verbose
Start-Sleep -s 3
# Start the Windows Update service
try {
Start-Service -Name wuauserv
}
catch {
$ErrorMessage = $_.Exception.Message
Write-Warning "$ErrorMessage"
}
Write-Host -ForegroundColor Yellow "Done..."
Write-Host -ForegroundColor Yellow "Please rerun Windows Update to pull down the latest updates `n"
}
# Empty Recycle Bin
if ($Cleanbin -eq 'Y') {
Write-Host -ForegroundColor Green "Cleaning Recycle Bin`n"
$ErrorActionPreference = 'SilentlyContinue'
$RecycleBin = "C:\`$Recycle.Bin"
$BinFolders = Get-ChildItem $RecycleBin -Directory -Force
Foreach ($Folder in $BinFolders) {
# Translate the SID to a User Account
$objSID = New-Object System.Security.Principal.SecurityIdentifier ($folder)
try {
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
Write-Host -Foreground Yellow -Background Black "Cleaning $objUser Recycle Bin"
}
# If SID cannot be Translated, Throw out the SID instead of error
catch {
$objUser = $objSID.Value
Write-Host -Foreground Yellow -Background Black "$objUser"
}
$Files = @()
if ($PSVersionTable.PSVersion -Like "*2*") {
$Files = Get-ChildItem $Folder.FullName -Recurse -Force
}
else {
$Files = Get-ChildItem $Folder.FullName -File -Recurse -Force
$Files += Get-ChildItem $Folder.FullName -Directory -Recurse -Force
}
$FileTotal = $Files.Count
for ($i = 1; $i -le $Files.Count; $i++) {
$FileName = Select-Object -InputObject $Files[($i - 1)]
Write-Progress -Activity "Recycle Bin Clean-up" -Status "Attempting to Delete File [$i / $FileTotal]: $FileName" -PercentComplete (($i / $Files.count) * 100) -Id 1
Remove-Item -Path $Files[($i - 1)].FullName -Recurse -Force
}
Write-Progress -Activity "Recycle Bin Clean-up" -Status "Complete" -Completed -Id 1
}
Write-Host -ForegroundColor Green "Done`n `n"
}
Write-Host -ForegroundColor Green "All Tasks Done!`n`n"
# Get Drive size after clean
$After = Get-WmiObject Win32_LogicalDisk | Where-Object { $_.DriveType -eq "3" } | Select-Object SystemName,
@{ Name = "Drive" ; Expression = { ( $_.DeviceID ) } },
@{ Name = "Size (GB)" ; Expression = { "{0:N1}" -f ( $_.Size / 1gb) } },
@{ Name = "FreeSpace (GB)" ; Expression = { "{0:N1}" -f ( $_.Freespace / 1gb ) } },
@{ Name = "PercentFree" ; Expression = { "{0:P1}" -f ( $_.FreeSpace / $_.Size ) } } |
Format-Table -AutoSize | Out-String
# Sends some before and after info for ticketing purposes
Write-Host -ForegroundColor Green "Before: $Before"
Write-Host -ForegroundColor Green "After: $After"
# Another reminder about running Windows update if needed as it would get lost in all the scrolling text.
if ($CleanWU -eq 'Y') {
Write-Host -ForegroundColor Yellow "`nPlease rerun Windows Update to pull down the latest updates. `n"
}
# Read some of the output before going away
Start-Sleep -s 15
# Completed Successfully!
# Open Text File
Invoke-Item $Cleanuplog
# Stop Script
Stop-Transcript
}
Listing all files in C:\Temp* recursively, using Force parameter displays hidden files.
$TempItems = Get-ChildItem -Path “C:\Temp*” -Recurse -Force
if ($TempItems.count -gt 1) {
Write-Warning “There are files within C:\Temp, please verify that important files are out of this location”
$Cont = Read-Host “Continue with the cleanup script [Y/N]”
if ($cont -eq “Y”) {
Cleanup
}
else {
Write-Host “Please check the files within C:\Temp before running the script again”
Start-Sleep -Seconds 5
}
}
else {
Cleanup
}