private/Invoke-CleanupTempFIles.ps1

Function Invoke-CleanupTempFiles {
    $currentSystemState = Get-ChildItem -Path "C:\Windows\Temp" -Recurse -File | Select-Object FullName
    $currentUserState = Get-ChildItem -Path $env:TEMP -Recurse -File | Select-Object FullName

    $newSystemFiles = Compare-Object -ReferenceObject $script:initialSystemState -DifferenceObject $currentSystemState -Property FullName | Where-Object {$_.SideIndicator -eq "=>"}
    $newUserFiles = Compare-Object -ReferenceObject $script:initialUserState -DifferenceObject $currentUserState -Property FullName | Where-Object {$_.SideIndicator -eq "=>"}
    $tempFiles = @($newSystemFiles) + @($newUserFiles)
    if($tempFiles.Count -gt 0) {
        Write-Host "Cleaning up temporary files"
        $tempFiles | ForEach-Object {
            Write-Host "Removing $($_.FullName)"
            try {
                Remove-Item -Path $_.FullName -Force
            } catch {
                Write-Host "Failed to remove $($_.FullName)"
            }
        }
    }
}