개요
Measure-Object는 객체의 개수를 세거나, 숫자 속성의 합계·평균·최댓값·최솟값·표준편차를 계산하는 cmdlet이다. 매개변수 없이 실행하면 단순히 파이프라인을 지나간 객체 개수(Count)만 알려주며, 이는 wc -l처럼 “일단 몇 개인지"를 확인하는 가장 기본적인 용도다.
정신 모델은 두 가지 서로 다른 집계 대상으로 나뉜다는 것이다 — 숫자 속성에 대한 통계(-Sum, -Average, -Maximum, -Minimum, -StandardDeviation)와, 문자열 객체에 대한 텍스트 집계(-Line, -Word, -Character)는 서로 다른 매개변수 세트(파라미터 셋)에 속해 있어 섞어 쓸 수 없다.
사용법
| |
매개변수
| 매개변수 | 설명 |
|---|---|
-Property | 집계할 속성(들). 계산된 속성(스크립트블록)도 가능하고, PowerShell 6+부터 와일드카드도 지원한다 |
-Sum / -Average | 지정한 속성 값의 합계·평균 |
-Maximum / -Minimum | 최댓값·최솟값 |
-StandardDeviation | 표준편차(PowerShell 6+) — 값이 클수록 데이터가 평균에서 넓게 퍼져 있다는 뜻이다 |
-AllStats | 위 통계를 한 번에 모두 계산(PowerShell 6+) |
-Line / -Word / -Character | 문자열 입력의 줄·단어·문자 수를 센다(서로 조합 가능) |
-IgnoreWhiteSpace | 문자 수를 셀 때 공백을 제외한다 |
예시
| |
주의사항·함정
두 매개변수 세트를 섞으면 오류가 난다: -Sum과 -Line을 동시에 쓸 수 없다. 숫자 통계를 낼지, 텍스트 줄·단어·문자를 셀지 먼저 정해야 한다.
속성을 지정하지 않으면 개수만 나온다: -Property 없이 -Sum/-Average 등을 쓰면 계산할 대상이 없어 결과가 비어 있다. 반드시 속성을 함께 지정해야 한다.
PowerShell 7.3부터 속성이 없는 객체를 조용히 건너뛴다: 이전 버전에서는 지정한 속성이 없는 객체를 만나면 오류가 났지만, 7.3부터는 StrictMode가 아닌 한 그냥 건너뛴다. 배치 스크립트에서 이 동작 변화가 결과에 영향을 줄 수 있다는 점을 염두에 두어야 한다.
이식성: Get-Content file.txt | Measure-Object -Line -Word -Character는 Bash의 wc -l -w -c와 거의 같은 결과를 주지만, PowerShell 쪽은 숫자 속성에 대한 통계 집계까지 같은 cmdlet 하나로 처리한다는 점에서 범위가 더 넓다 — Bash에서 숫자 합계를 내려면 awk '{sum+=$1} END {print sum}'처럼 별도 도구가 필요하다.
![Featured image of post [PowerShell] 17. Measure-Object — 집계·통계](/post/powershell/measure-object-command-aggregate-statistics-powershell/wordcloud_hu_c8c8e64b6fce534f.webp)
![[PowerShell] 15. ForEach-Object — 파이프라인 반복 처리](/post/powershell/foreach-object-command-pipeline-loop-powershell/wordcloud_hu_b76415f4d50f87a3.webp)
![[PowerShell] 16. Group-Object — 그룹화](/post/powershell/group-object-command-grouping-powershell/wordcloud_hu_2e19558643be3d4e.webp)
![[PowerShell] 17. Measure-Object — 집계·통계](/post/powershell/measure-object-command-aggregate-statistics-powershell/wordcloud_hu_f090ca1c28bf8f73.webp)
![[PowerShell] 18. Tee-Object — 파이프라인 분기](/post/powershell/tee-object-command-pipeline-branch-powershell/wordcloud_hu_26906348220bc5ce.webp)
![[PowerShell] 19. Compare-Object — 객체 비교(diff)](/post/powershell/compare-object-command-diff-powershell/wordcloud_hu_85c73f8cde4535c3.webp)
![[PowerShell] 30. PSDrive와 프로바이더 개념](/post/powershell/psdrive-provider-concept-powershell/wordcloud_hu_48d84a64f7474c4.webp)
![[PowerShell] 31. Get-ChildItem — 파일·디렉터리 목록](/post/powershell/get-childitem-command-file-directory-list-powershell/wordcloud_hu_3e00080e70b06aa7.webp)
![[PowerShell] 34. Copy-Item — 복사](/post/powershell/copy-item-command-copy-file-powershell/wordcloud_hu_ebeda4bcc9a1c9ff.webp)
![[PowerShell] 35. Move-Item/Rename-Item — 이동과 이름 변경](/post/powershell/move-rename-item-command-powershell/wordcloud_hu_cb2a58d584784b24.webp)