Steven's solution is arguably better than mine. :)

-----get-foldersize.ps1-----
Param(
       [string]$path = $home,
       [switch]$sortBySize
)

function Get-FolderSize( $path )
{
       $code = { ('{0:0.0} MB' -f ($this/1MB)) }
       Get-ChildItem -Path $Path |
              Where-Object { $_.Length -eq $null } |
              ForEach-Object {
                     Write-Progress -Activity 'Calculating Total Size for:' 
-Status $_.FullName
                     $sum = Get-ChildItem $_.FullName -Recurse -ErrorAction 
SilentlyContinue |
                           Measure-Object -Property Length -Sum -ErrorAction 
SilentlyContinue
                     $bytes = $sum.Sum
                     if ($bytes -eq $null) { $bytes = 0   }
                     $result = 1 | Select-Object -Property Path, TotalSize
                     $result.Path = $_.FullName
                     $result.TotalSize = $bytes |
                           Add-Member -MemberType ScriptMethod -Name toString 
-Value $code -Force -PassThru
                     $result
              }
}

if( $sortBySize )
{
       Get-FolderSize $path | sort -Property TotalSize
}
else
{
       Get-FolderSize $path
}
-----get-foldersize.ps1-----

Regards,

Michael B. Smith
Consultant and Exchange MVP
http://TheEssentialExchange.com

From: John Hornbuckle [mailto:john.hornbuc...@taylor.k12.fl.us]
Sent: Thursday, November 10, 2011 3:35 PM
To: NT System Admin Issues
Subject: RE: Easy Way to View and Sort By Folder Sizes

Can you tell a PS novice how to get this to sort by size? That would make it 
perfect.


John

From: Michael B. Smith 
[mailto:mich...@smithcons.com]<mailto:[mailto:mich...@smithcons.com]>
Sent: Thursday, November 10, 2011 1:41 PM
To: NT System Admin Issues
Subject: RE: Easy Way to View and Sort By Folder Sizes

I wrote this for someone here (well, on some mailing list, I think it was this 
one) a couple months ago, but I use it all the time now.

-----get-foldersize.ps1-----
function Get-FolderSize( $path = $home )
{
   $code = { ('{0:0.0} MB' -f ($this/1MB)) }
   Get-ChildItem -Path $Path |
      Where-Object { $_.Length -eq $null } |
      ForEach-Object {
           Write-Progress -Activity 'Calculating Total Size for:' -Status 
$_.FullName
       $sum = Get-ChildItem $_.FullName -Recurse -ErrorAction SilentlyContinue |
        Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue
      $bytes = $sum.Sum
      if ($bytes -eq $null) { $bytes = 0   }
      $result = 1 | Select-Object -Property Path, TotalSize
      $result.Path = $_.FullName
      $result.TotalSize = $bytes |
        Add-Member -MemberType ScriptMethod -Name toString -Value $code -Force 
-PassThru
      $result
    }
}

Get-FolderSize $args
-----get-foldersize.ps1-----

Example:

PS C:\Scripts> .\Get-FolderSize.ps1 c:\windows

Path                                                                  TotalSize
----                                                                  ---------
C:\windows\ADAM                                                          3.6 MB
C:\windows\ADWS                                                          0.7 MB
C:\windows\AppCompat                                                     0.1 MB
C:\windows\AppPatch                                                     10.4 MB
C:\windows\assembly                                                   2436.4 MB
C:\windows\Boot                                                         19.7 MB
C:\windows\Branding                                                      2.2 MB
C:\windows\CSC                                                           0.0 MB
C:\windows\Cursors                                                       0.1 MB
C:\windows\debug                                                         8.6 MB
C:\windows\diagnostics                                                   1.0 MB
C:\windows\DigitalLocker                                                 0.0 MB
C:\windows\Downloaded Installations                                      4.9 MB
C:\windows\Downloaded Program Files                                     19.7 MB
C:\windows\Driver Cache                                                  0.3 MB
C:\windows\en                                                            0.1 MB
C:\windows\en-US                                                         0.1 MB
C:\windows\Fonts                                                       376.1 MB
C:\windows\Globalization                                                 9.6 MB
C:\windows\Help                                                         68.1 MB
C:\windows\idmu                                                          0.3 MB
C:\windows\IME                                                         136.8 MB
......

Regards,

Michael B. Smith
Consultant and Exchange MVP
http://TheEssentialExchange.com

From: John Hornbuckle 
[mailto:john.hornbuc...@taylor.k12.fl.us]<mailto:[mailto:john.hornbuc...@taylor.k12.fl.us]>
Sent: Thursday, November 10, 2011 10:42 AM
To: NT System Admin Issues
Subject: Easy Way to View and Sort By Folder Sizes

We use folder redirection here, and I'm trying to get a handle on which users 
have the most stuff.

So we have something like:

x:\path\user1
x:\path\user2
x:\path\user3

and so on.

I'd like to look at x:\path and sort all the folders in it by size, displaying 
the size in MB. So the results would be something like:

x:\path\user3    500 MB
x:\path\user1    200 MB
x:\path\user2    100 MB

What's the easiest way to do this?

I'll need specifics (e.g., don't tell me I can do it with PS unless you're 
gonna tell me precisely how).

:)



John Hornbuckle, MSMIS, PMP
MIS Department
Taylor County School District
www.taylor.k12.fl.us



~ Finally, powerful endpoint security that ISN'T a resource hog! ~
~ <http://www.sunbeltsoftware.com/Business/VIPRE-Enterprise/>  ~

---
To manage subscriptions click here: 
http://lyris.sunbelt-software.com/read/my_forums/
or send an email to 
listmana...@lyris.sunbeltsoftware.com<mailto:listmana...@lyris.sunbeltsoftware.com>
with the body: unsubscribe ntsysadmin

~ Finally, powerful endpoint security that ISN'T a resource hog! ~
~ <http://www.sunbeltsoftware.com/Business/VIPRE-Enterprise/>  ~

---
To manage subscriptions click here: 
http://lyris.sunbelt-software.com/read/my_forums/
or send an email to 
listmana...@lyris.sunbeltsoftware.com<mailto:listmana...@lyris.sunbeltsoftware.com>
with the body: unsubscribe ntsysadmin

~ Finally, powerful endpoint security that ISN'T a resource hog! ~
~ <http://www.sunbeltsoftware.com/Business/VIPRE-Enterprise/>  ~

---
To manage subscriptions click here: 
http://lyris.sunbelt-software.com/read/my_forums/
or send an email to 
listmana...@lyris.sunbeltsoftware.com<mailto:listmana...@lyris.sunbeltsoftware.com>
with the body: unsubscribe ntsysadmin

~ Finally, powerful endpoint security that ISN'T a resource hog! ~
~ <http://www.sunbeltsoftware.com/Business/VIPRE-Enterprise/>  ~

---
To manage subscriptions click here: 
http://lyris.sunbelt-software.com/read/my_forums/
or send an email to listmana...@lyris.sunbeltsoftware.com
with the body: unsubscribe ntsysadmin

Reply via email to