Powershell для мониторинга использования диска - производительность запроса сценария

У меня есть следующая оболочка powershell, которую я разрабатываю, чтобы сообщать об использовании моего диска и давать мне представление о том, какие папки меняются в размере и т. д.

Get-ChildItem -Path "C:\" | 
Select-Object Name,
    @{ 
        Name="Size";
        Expression=
            { 
                [Math]::Round(
                    ((($_ | Get-ChildItem -Recurse | Measure-Object -Sum Length).Sum + 0) / 1GB)
                    , 2)
            }
    }

Этот скрипт очень медленный... почему?

Объект Measure-object оценивает размер каждый раз, когда просматривает папку?

Что было бы лучшим способом сделать это?

Спасибо


person ihavenoidea    schedule 17.04.2013    source источник


Ответы (1)


Вы перечисляете каждый объект файловой системы на диске C и измеряете его размер, что может занять очень много времени. Два варианта (их больше):

(Get-PSDrive c).Used/1gb

- and -

$cDrive = (New-Object -ComObject Scripting.FileSystemObject).GetDrive('C')
$used = ($cDrive.TotalSize-$cDrive.FreeSpace)/1gb
$used.ToString('N2')
person Shay Levy    schedule 17.04.2013