Привет.
Узнать размер файла с помощью POSH очень просто
$l = Get-Item [путь к файлу]
$l.Length
А вот с размером каталога сложней.
У объекта каталог нет свойства Length
и по этому нужно суммировать размеры всех файлов в каталоге и в подкаталогах.
$l = Get-ChildItem путь к каталогу -recurse -Force | Measure-Object -Property Length -Sum
$l.sum
а так $l.sum /1mb
POSH покажет размер в мегабайтах
Так же можно отформатировать вывод, к примеру выводить после запятой 2 знака
$FolderSize = (Get-ChildItem X:\temp -recurse -Force | Measure-Object -Property Length -Sum).Sum / 1Mb
[math]::round($FolderSize,2)
По мотивам: Smearg
Подскажите а как можно вывести сумарный размер файлов для каждого расширения в определенной папке?
Как то так, покажет размер всех txt файлов в каталоге:
Get-ChildItem "D:\test\" -recurse -Force | Where-Object {$_.Extension -eq ".txt"} | Measure-Object -Property Length -Sum
Или сразу размер на примере VHD
(Get-ChildItem "D:\hyper-V\Users\Hyper-V" -recurse -Force | Where-Object {$_.Extension -eq ".vhdx"} | Measure-Object -Property Length -Sum).sum /1mb
Подскажите а как можно сгруппировать файлы по расширениям и для каждой группы вывести суммарный размер всех файлов в ней?
Выше в коментах ответ на схожий с вашим вопрос, нужно малость накодить: Как то так:
###############################################################
#
# Суммарный объём файлов с одним расширением в указанном каталоге
#
#
# 20.11.2012 ada(СОБАКА)alexwhite.ru Alexandr
# Пример
# .\FilesSumSize.ps1 -Folder c:\tmp -ExtList "exe;txt;pdf"
#
#
#
################################################################
param ($Folder, $ExtList)
#############################
#
# Суммирование размера файлов
#
#############################
Function Sum ($Path, $FileExt)
{
$FileExt = "." + $FileExt
$Sum = (Get-ChildItem $Path -recurse -Force | where {$_.extension -eq $FileExt} | Measure-Object -Property Length -Sum).Sum / 1Mb
$Count = (Get-ChildItem $Path -recurse -Force | where {$_.extension -eq $FileExt} | Measure-Object -Property Length -Sum).Count
Write-host "Файлов $FileExt $Count шт. Размер= $Sum"
#Можно вернуть саммарный размер
#Return $Sum
}
################# Скрипт ######################
CLS
Write-host "========= Суммарный объём файлов в каталоге $Folder : ========="
# Получение кло-во разрешений и их значения
$Arrayext = $ExtList -split ";"
Foreach ($Ext in $Arrayext)
{
#Вызов функции суммирования файлов
sum $Folder $Ext
}
Вывод:
========= Суммарный объём файлов в каталоге c:\tmp : =========
Файлов .exe 2 шт. Размер= 16.0344390869141
Файлов .txt 3 шт. Размер= 0.000396728515625
Файлов .pdf шт. Размер= 0