param ( [String]$Path, [boolean]$OutGridView ) Function Get-FolderSize($Path){ $c=0 Get-ChildItem $Path -Recurse | % {if($_.Mode -ne "d-----"){$c += (Get-Item ($_).Fullname).Length}} ("{0:N2}" -f ($c / 1024 / 1024 )) } $outarray = @() $full = (Get-ChildItem $path | ? {$_.Mode -like "d*"}).count $count = 0 foreach($subitem in Get-ChildItem $path | ? {$_.Mode -like "d*"}) { $size = Get-FolderSize $subitem.FullName $obj = New-Object psobject $obj | Add-Member -MemberType NoteProperty -Name "Folder" -Value $subitem.FullName $obj | Add-Member -MemberType NoteProperty -Name "Size" -Value ($size.ToString() + "MB") Write-Progress -Activity $subitem.Name -PercentComplete (($count / $full)*100) $count++ $outarray += $obj } if($OutGridView) { $outarray | Out-GridView } else { $outarray | format-table Folder,@{n='Size';e={$_.Size};align='right'} }