Показать структуру каталогов с размером в Powershell - PullRequest
5 голосов
/ 06 октября 2010

Попытка использовать команду "dir", которая отображает размер подпапок и файлов. После поиска "размера каталога powershell" я нашел две полезные ссылки

  1. Определение размера папки http://technet.microsoft.com/en-us/library/ff730945.aspx
  2. Сценарий PowerShell для получения общего размера каталога Сценарий PowerShell для получения общего размера каталога

Эти души прекрасны, но я ищу что-то похожее на вывод "dir", удобный и простой, и которое я могу использовать в любом месте структуры папок.

Итак, я закончил этим, любые предложения, чтобы сделать его простым, элегантным, эффективным.

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} 
                  }
     };  

Спасибо.

1 Ответ

8 голосов
/ 07 октября 2010

Первым второстепенным модом было бы избегать создания нового FileSystemObject для каждого каталога.Сделайте это функцией и вытяните новый объект из конвейера.

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}  
                         } 
                     }
}

Если вы хотите вообще избежать COM, вы можете вычислить размеры dir, используя только PowerShell:

...