2013-07-16 15 views
11

Moim celem jest ustalenie, ile miejsca zajmują wszystkie obrazy na dyskach sieciowych.Dodawanie rozmiarów plików listy Get-ChildItem

Więc moje polecenie, aby pobrać listę wszystkich obrazów to:

Get-ChildItem -recurse -include *jpg,*bmp,*png \\server01\folder 

Następnie chciałbym tylko odzyskać rozmiar pliku (Length).

Get-ChildItem -recurse -include *jpg,*bmp,*png \\server01\folder | Select-Object -property Length 

Teraz Wyjścia:

          Length 
             ------ 
             85554 
             54841 
             87129 
             843314 

Nie wiem, dlaczego to jest wyrównany do prawej, ale chcę chwycić każdej długości i dodać je wszystkie razem. Jestem zagubiony i próbowałem wszystkiego, co wiem (co nie jest znaczące odkąd jestem nowy na PS), próbowałem przeszukać Google, ale nie mogłem znaleźć żadnych istotnych wyników.

Każda pomoc lub alternatywne metody są mile widziane!

Odpowiedz

20

Użyj Measure-Object komandletu:

$files = Get-ChildItem -Recurse -Include *jpg,*bmp,*png \\server01\folder 
$totalSize = ($files | Measure-Object -Sum Length).Sum 

Aby uzyskać rozmiar w GB podzielić wartość przez 1GB:

$totalSize = ($files | Measure-Object -Sum Length).Sum/1GB 
+0

Dziękuję! Działa cudownie, czy istnieje sposób na przekonwertowanie go na GB? – user2517266

+0

Nieważne Mam to z $ SizeInGigs = $ totalSize/1GB – user2517266

2

Można zrobić to jako jedną wkładką z czymś takim.

Get-Childitem -path "C:\Program Files\Internet Explorer" | Select-Object 
Name, @{Name="KBytes";Expression={ "{0:N0}" -f ($_.Length/1KB) }} 

Name   KBytes 
----   ------ 
en-US   0 
images  0 
SIGNUP  0 
ExtExport.exe 52 
hmmapi.dll 53 
iediagcmd.exe 500 
ieinstal.exe 490 
ielowutil.exe 219 
IEShims.dll 398 
iexplore.exe 805 
sqmapi.dll 49