PowerShell: kataloogi ruumikasutuse aruande skript
From ICO wiki
Jump to navigationJump to search
<#
.SYNOPSIS
Koostab faililaiendite põhjal aruande ruumi kasutusest kataloogis.
.DESCRIPTION
See skript käib ette antud kataloogi läbi ja koostab faililaiendite põhjal
aruande, kus on näidatud, kui palju on iga faililaiendiga faile ja kui palju
moodustavad need failid kataloogi kogumahust.
Tulemuseks annab skript nimekirja, kus igal objektil on järgnevad väärtused:
Extension - Faili laiend
SizeTotal - Selle laiendi poolt kasutatud ruum (baitides)
SizeUsage - Selle laiendi poolt protsentuaalselt kasutatud ruum
SizeAvg - Keskmine faili suurus (antud laiendiga)
CountTotal - Selle failaiendiga failide arv
NB! Mahukamate kataloogide puhul võib aruande koostamine natuke aega võtta.
.Example
C:\PS>.\filetype_overview.ps1 "C:\Users\" | Sort-Object CountTotal -desc | Format-Table
Loendab tulemused failide arvu järgi ja kuvab need tabeli kujul. Aruanne tehakse kataloogi "C:\Users\" põhjal.
.Example
C:\PS>.\filetype_overview.ps1 "C:\Users\" | Sort-Object SizeTotal -desc | Select-Object -First 1
Leiab kõige rohkem ruumi võtvama faililaiendi "C:\Users\" kataloogis.
.NOTES
Autor: Taavi Sannik A21
Versioon: 0.9
Viimati muudetud: 23.05.2012
.LINK
http://www.itcollege.ee
#>
param([string]$path = ".")
$total_size = 0
$results = @{}
# Kogume andmed käies kataloogi läbi
Get-ChildItem -Path $path -Recurse | ForEach {
$ext = $_.Extension
if (!$_.Length) {
return
}
# Kontrollime kas kirje selle laiendi kohta on olemas
if (!$results.ContainsKey($ext)) {
# Kui ei ole, siis lisame
$ext_oview = New-Object psobject -Property @{Extension = $ext;
SizeTotal = $_.Length;
CountTotal = 1;
SizeUsage = .0;
SizeAvg = 0;}
$results.Set_Item($ext, $ext_oview)
} else {
# Muudame olemasolevat
$ext_oview = $results.Get_Item($ext)
$ext_oview.SizeTotal += $_.Length
$ext_oview.CountTotal += 1
}
# Loeme kokku kogumahu
$total_size += $_.Length
}
$results.Values | ForEach {
# Arvutame keskmised ja protsentuaalse kasutuse
$_.SizeAvg = [System.Math]::Round($_.SizeTotal / $_.CountTotal, 0)
$_.SizeUsage = [System.Math]::Round(($_.SizeTotal / $total_size) * 100, 2)
}
# Tagastame tulemused
return $results.Values