Measure-Object to powershellowy odpowiednik kalkulatora wbudowanego w potok. Bierze obiekty, które do niego dosypiesz, i liczy podstawowe statystyki: ile ich jest, jaka jest suma, średnia, wartość minimalna i maksymalna wybranej właściwości. Potrafi też pracować na tekście i policzyć linie, słowa oraz znaki, czyli zachowuje się trochę jak windowsowy wc z Linuksa. Najczęściej trafia na koniec potoku, gdy masz listę plików, procesów albo wpisów z CSV i chcesz szybko coś z nich podsumować, bez wyciągania Excela.
Składnia i najważniejsze opcje
Podstawowy wzorzec wygląda tak:
-Property— wskazuje, którą właściwość obiektu mierzyć (np.Length,CPU). Bez niej dostajesz tylko zliczenie obiektów.-Sum— pokazuje sumę wartości danej właściwości.-Average— liczy średnią arytmetyczną.-Maximum— zwraca wartość największą.-Minimum— zwraca wartość najmniejszą.-StandardDeviation— odchylenie standardowe (dostępne od PowerShell 6).-AllStats— zwraca wszystkie statystyki naraz: sumę, średnią, min, max i odchylenie (PowerShell 6+).-Line,-Word,-Character— tryb tekstowy: liczy linie, słowa i znaki zamiast wartości liczbowych.
Przykłady użycia
Get-ChildItem C:\Logs | Measure-Object— zlicza, ile plików i folderów jest w katalogu (sama liczba obiektów, bez sumowania).Get-ChildItem C:\Logs -File | Measure-Object -Property Length -Sum— sumuje rozmiar wszystkich plików; wynik dostajesz w bajtach w poluSum.Get-Process | Measure-Object -Property WorkingSet -Average -Maximum -Minimum— pokazuje średnie, maksymalne i minimalne zużycie pamięci przez procesy.Get-Content plik.txt | Measure-Object -Line -Word -Character— liczy linie, słowa i znaki w pliku tekstowym, czyli odpowiednikwc.Import-Csv sprzedaz.csv | Measure-Object -Property Kwota -AllStats— jednym strzałem wyciąga komplet statystyk dla kolumny z CSV.
Częste błędy i pułapki
Najpopularniejszy zgrzyt: Measure-Object bez -Sum czy -Average nie zsumuje ci niczego sam z siebie — domyślnie zwraca tylko Count. Druga pułapka to wynik: cmdlet oddaje obiekt z polami Count, Sum itd., a nie gołą liczbę. Jeśli chcesz samą wartość, sięgnij po nią wprost, np. (Get-Process | Measure-Object).Count. Pamiętaj też, że -Property musi wskazywać właściwość liczbową — przy tekstowej dostaniesz błąd albo zera. I nie myl dwóch trybów: -Sum i -Word należą do osobnych grup parametrów, więc nie połączysz ich w jednym wywołaniu. Na koniec drobiazg historyczny: -AllStats i -StandardDeviation działają dopiero od PowerShell 6, więc na starym Windows PowerShell 5.1 ich nie uświadczysz.
Powiązane komendy: Group-Object, Sort-Object, Select-Object, Where-Object.