Disk space cleanup candidate report

A read-only disk-pressure report that captures low-space context and returns targeted cleanup candidates from known folders without deleting, compressing, or moving anything.

Good For

  • low disk incidents
  • server health checks
  • IIS log growth
  • patch cache review
  • support handoff

How to Use It

  1. Record which volume is under pressure and the expected owner of the largest workload before reviewing cleanup candidates.
  2. Capture fixed-disk size and free-space data so the ticket has a before-state.
  3. Review IIS logs, Windows temp files, crash dumps, installer caches, application logs, and known export folders as separate candidate groups.
  4. If a candidate path belongs to a database, backup product, monitoring agent, or line-of-business app, stop and confirm retention requirements.
  5. Export the largest-file findings to CSV when multiple servers or folders need owner review.
  6. Only move to deletion or archival after the report identifies owner, age, retention expectation, and rollback or restore path.

Execution Modes

  • local
  • remote-single-host
  • remote-host-list

Inputs and Outputs

Inputs

  • computer name
  • CSV or TXT server list
  • known log paths
  • retention policy notes

Outputs

  • verbose-console
  • csv

Command Starter

Safe to run: read-only

# ---------------------------------------------------------------------
# Operator inputs
# ---------------------------------------------------------------------
$ComputerName = 'server01'
$OutputPath = '.\disk-cleanup-candidates.csv'

# Keep the starter intentionally scoped. Add application-specific folders only after owner review.
$CandidatePaths = @(
    'C:\inetpub\logs\LogFiles',
    'C:\Windows\Temp'
)

# ---------------------------------------------------------------------
# Collect the largest files from each approved candidate path
# ---------------------------------------------------------------------
$Results = Invoke-Command -ComputerName $ComputerName -ArgumentList (,$CandidatePaths) -ScriptBlock {
    param([string[]]$RemoteCandidatePaths)

    foreach ($Path in $RemoteCandidatePaths) {
        if (-not (Test-Path -Path $Path)) { continue }

        Get-ChildItem -Path $Path -Recurse -File -ErrorAction SilentlyContinue |
            Sort-Object -Property Length -Descending |
            Select-Object -First 20 |
            ForEach-Object {
                [pscustomobject]@{
                    ComputerName = $env:COMPUTERNAME
                    CandidatePath = $Path
                    FullName = $_.FullName
                    SizeMB = [math]::Round($_.Length / 1MB, 2)
                    LastWriteTime = $_.LastWriteTime
                }
            }
    }
}

# Preserve a review file for owners. This does not remove anything.
$Results | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8
$Results | Format-Table -AutoSize

Validation

  • The report identifies which volume is low and which candidate folders contribute the most space.
  • Every cleanup candidate has an owner or service context before any file operation is proposed.
  • Post-cleanup validation, if later approved, compares free space against the captured before-state.

Reporting

  • Export targeted cleanup candidates to CSV for owner and retention review.
  • Attach the folder scope and largest-file evidence to the ticket before proposing cleanup.
  • Promote repeated use into an HTML disk-pressure report with owner and retention columns.

Safety Notes

  • This report is read-only and should not delete, compress, or move files.
  • Keep candidate paths scoped. Avoid unbounded full-drive recursion during an active incident.
  • Do not clean Windows, database, backup, or application paths without owner approval and restore expectations.