Update list-unused-files.ps1

This commit is contained in:
Markus Fleschutz 2023-10-24 10:35:11 +02:00
parent e93cb73d02
commit 824903d3b2

View File

@ -2,28 +2,39 @@
.SYNOPSIS .SYNOPSIS
Lists unused files in a directory tree Lists unused files in a directory tree
.DESCRIPTION .DESCRIPTION
This PowerShell script scans and lists files in a folder with last access time older than number of days. This PowerShell script scans a directory tree and lists unused files (no read/write access since a number of days).
.PARAMETER DirTree .PARAMETER path
Specifies the path to the directory tree Specifies the path to the directory tree (current working dir by default)
.PARAMETER Days .PARAMETER days
Specifies the number of days Specifies the number of days (100 by default)
.EXAMPLE .EXAMPLE
PS> ./list-unused-files.ps1 C:\ 100 PS> ./list-unused-files.ps1 C:\Windows
...
Found 43729 unused files (no access for 100 days) within 📂C:\Windows in 113 sec
.LINK .LINK
https://github.com/fleschutz/PowerShell https://github.com/fleschutz/PowerShell
.NOTES .NOTES
Author: Markus Fleschutz | License: CC0 Author: Markus Fleschutz | License: CC0
#> #>
param([string]$DirTree = "", [int]$Days = 100) param([string]$path = "$PWD", [int]$days = 100)
write-host "Listing files in $DirTree with last access time older than $Days days"
try { try {
$stopWatch = [system.diagnostics.stopwatch]::startNew()
$path = Resolve-Path "$path"
Write-Progress "Scanning $path for unused files..."
$cutOffDate = (Get-Date).AddDays(-$Days) $cutOffDate = (Get-Date).AddDays(-$Days)
[int]$count = 0
Get-ChildItem -path $path -recurse | Where-Object {$_.LastAccessTime -le $cutOffDate} | Foreach-Object {
"📄$($_.FullName)"
$count++
}
Get-ChildItem -path $DirTree -recurse | Where-Object {$_.LastAccessTime -le $cutOffDate} | select fullname Write-Progress -completed " "
[int]$elapsed = $stopWatch.Elapsed.TotalSeconds
"✔️ Found $count unused files (no access for $days days) within 📂$path in $elapsed sec"
exit 0 # success exit 0 # success
} catch { } catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"