Windows에서 디스크 사용량이 큰 폴더를 찾기 위해 PowerShell로 하위 폴더별 파일 크기를 합산하는 방법입니다. 원노트의 C:\Users 예제를 정리했습니다. 파일의 논리적 길이 합계이므로 실제 할당 공간이나 탐색기의 디스크 크기와 다를 수 있습니다.
집계 대상과 숨김 파일
바로 아래 디렉터리를 하나씩 고른 뒤 각 디렉터리의 파일 크기를 재귀 합산합니다. -Force는 숨김 항목을 포함하고 -File은 파일만 대상으로 합니다. 권한이 없는 경로의 오류는 별도 변수로 모읍니다.
$scanErrors = @()
Get-ChildItem 'C:\Users' -Directory -Force | ForEach-Object {
$folder = $_.FullName
$bytes = (Get-ChildItem -LiteralPath $folder -File -Recurse -Force -ErrorAction SilentlyContinue -ErrorVariable +scanErrors |
Measure-Object -Property Length -Sum).Sum
[PSCustomObject]@{
Folder = $folder
SizeGiB = [math]::Round(($bytes / 1GB), 2)
}
} | Sort-Object SizeGiB -Descending | Format-Table -AutoSize
$scanErrors.CountPowerShell의 1GB는 1024의 세제곱 바이트이므로 출력 이름은 GiB로 표시했습니다. 정렬하려면 문자열로 포맷하지 않고 숫자를 유지한 상태에서 Sort-Object를 적용합니다.
범위를 좁혀 재조회
전체 사용자 경로는 파일 수가 많으면 오래 걸립니다. 큰 폴더가 보이면 C:\Users\lieper\AppData\Local처럼 경로를 좁혀 다시 실행합니다. 상위 폴더의 숨김 디렉터리도 보려면 바깥쪽 Get-ChildItem에도 -Force가 필요합니다.
결과의 한계 확인
권한 거부가 있으면 합계가 실제보다 작습니다. 오류 수가 0이 아닌 경우 내용을 검토하고 필요한 권한으로 다시 조회합니다. 재분석 지점·하드링크·희소 파일·압축·중복 제거에 따라 논리 합계와 물리 점유가 다를 수 있습니다.
크기가 크다는 이유만으로 시스템 캐시나 애플리케이션 데이터를 바로 삭제하지 않습니다. 서비스의 정상 정리 기능과 보관 정책을 확인하고 정리 후 같은 범위를 다시 집계해 효과를 비교합니다.