2010-10-06 11 views
5

Próbujesz mieć polecenie "dir" wyświetlające rozmiar podfolderów i plików. Po googlowania „rozmiar katalogów PowerShell”, znalazłem Thew dwa przydatne linkiWyświetl strukturę katalogów z rozmiarem w Powershell

  1. określania wielkości folderu http://technet.microsoft.com/en-us/library/ff730945.aspx
  2. PowerShell Script dostać katalog Łączny rozmiar PowerShell Script to Get a Directory Total Size

Te soultions są świetne , ale szukam czegoś podobnego do "dir", poręcznego i prostego, którego mogę użyć w dowolnym miejscu w strukturze folderów.

Tak więc skończyło się na tym, Wszelkie sugestie, aby to proste, eleganckie, wydajne.

Get-ChildItem | 
Format-Table -AutoSize Mode, LastWriteTime, Name, 
    @{ Label="Length"; alignment="Left"; 
     Expression={ 
        if($_.PSIsContainer -eq $True) 
         {(New-Object -com Scripting.FileSystemObject).GetFolder($_.FullName).Size} 
        else 
         {$_.Length} 
        } 
    }; 

Dziękuję.

Odpowiedz

8

Pierwszy niewielki mod polegałby na uniknięciu tworzenia nowego obiektu FileSystemObject dla każdego katalogu. Ustaw tę funkcję i wyciągnij nowy obiekt z rurociągu.

function DirWithSize($path=$pwd) 
{ 
    $fso = New-Object -com Scripting.FileSystemObject 
    Get-ChildItem | Format-Table -AutoSize Mode, LastWriteTime, Name, 
        @{ Label="Length"; alignment="Left"; Expression={ 
         if($_.PSIsContainer) 
          {$fso.GetFolder($_.FullName).Size} 
         else 
          {$_.Length} 
         } 
        } 
} 

Jeśli chcesz uniknąć COM ogóle można obliczyć DIR rozmiary używając tylko PowerShell tak:

function DirWithSize($path=$pwd) 
{ 
    Get-ChildItem $path | 
     Foreach {if (!$_.PSIsContainer) {$_} ` 
       else { 
        $size=0; ` 
        Get-ChildItem $_ -r | Foreach {$size += $_.Length}; ` 
        Add-Member NoteProperty Length $size -Inp $_ -PassThru ` 
       }} | 
     Format-Table Mode, LastWriteTime, Name, Length -Auto 
} 
+0

Dziękuję Keith, co skończyło się robi jest umieszczenie tej funkcji w pliku profilu, więc mogę uzyskać do niego dostęp za każdym razem, gdy używam PS – iraSenthil

+0

@Keith Hill: +1 i gdybym mógł dwa razy to zrobić, chciałbym ... Próbuję odszyfrować moją HD, ponieważ mój vmware umiera i chce łatwo zobaczyć, gdzie jest miejsce na dysku idzie. To jest prawdziwa pomoc! – wmorrison365

+0

Znowu znowu! :-) – wmorrison365

Powiązane problemy