Skip to content

Instantly share code, notes, and snippets.

@WimObiwan
Created January 21, 2019 13:51
Show Gist options
  • Save WimObiwan/1e2ddbc03648805f1e40df2b74396b2d to your computer and use it in GitHub Desktop.
Save WimObiwan/1e2ddbc03648805f1e40df2b74396b2d to your computer and use it in GitHub Desktop.
Get-DiskUsage
function Get-DiskUsage ($Path)
{
$BIG_THRESHOLD_MB = 50
$directories = @(Get-ChildItem $Path -Directory)
function Get-DiskUsage2 ($directoryFullName, $directoryName, $recurse)
{
$items = Get-ChildItem -Recurse:$recurse $directoryFullName | ?{ -not $_.PSIsContainer } | Select Length
$measure = $items | Measure-Object Length -Sum -Average -Maximum -Minimum -StandardDeviation
$measureBig = $items | ?{ $_.Length -gt $BIG_THRESHOLD_MB * 1000 * 1000 } | Measure-Object Length -Sum
[PSCustomObject]@{
Name = $directoryName
FullName = $directoryFullName
Count = $measure.Count
TotalSize = $measure.Sum
AverageSize = $measure.Average
MaximumSize = $measure.Maximum
MinimumSize = $measure.Minimum
StandardDeviationSize = $measure.StandardDeviation
CountBig = $measureBig.Count
TotalSizeBig = $measureBig.Sum
}
}
$cnt = 0
$tot = $directories.Length
$directories | %{
Write-Progress -Activity 'Get-DiskUsage...' -Status $_.Name -PercentComplete ($cnt * 100 / $tot)
Get-DiskUsage2 $_.FullName $_.Name $true
$cnt++
}
Write-Progress -Activity 'Get-DiskUsage...' -Status '.' -PercentComplete 100
Get-DiskUsage2 $Path '.' $false
Write-Progress -Activity 'Get-DiskUsage...' -Completed
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment