Первым второстепенным модом было бы избегать создания нового 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: