サイズの大きいファイル・フォルダを見つける

Last Update: feedback 共有

本記事はマイクロソフト社員によって公開されております。

こんにちは、Windows サポートチームの栗木です。
本記事では、サイズの大きいファイルやフォルダを見つける PowerShell スクリプトをご紹介します。ドライブの空き容量が枯渇した際に実行し、容量を取っているファイルやフォルダを確認するのに利用できます。紹介しているスクリプトは、管理者として起動した PowerShell で実行してください。

基本的に空き容量枯渇の原因としては、単純にファイル サイズの大きいファイルがあるまたは特定のフォルダの配下に大量のファイル(ログ ファイル等)があることが考えられますが、ファイル システムの管理領域による空き容量枯渇もございますので、その場合は、別の対処が必要になります。

適用対象の OS

  • Windows 8.1
  • Windows 10
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows Server 2019

PowerShell スクリプト

サイズの大きいファイルとフォルダを調べる PowerShell スクリプトに記載します。$RootPath に調査したいパスを指定して実行してください。ドライブではなく、あるフォルダの配下(例:C:\Users)を調べることもできます。実行時間は、フォルダ数、ファイル数、ディスク性能に依存し、Cドライブを指定する場合は、通常、10分以上かかります。$ErrorActionPreference は、アクセス権のないデータにアクセスしたときにエラーが発生するため、それを無視するため設定しています。

サイズの大きいファイルを見つける

1
2
3
4
5
6
7
8
9
$ErrorActionPreference = "silentlycontinue"
$RootPath = "C:\"
$OutputCsvPath = ".\SortedFileList.csv"

Get-ChildItem -Path $RootPath -File -Force -Recurse -Attributes !Offline |
Where-Object {$_.Length -gt 1MB} |
Select-Object Length, Name, DirectoryName |
Sort-Object -Property Length -Descending |
Export-Csv -Path $OutputCsvPath -NoTypeInformation -Encoding Default

処理の流れは、$RootPath 配下にあるサブ フォルダを含むすべてのファイルを取得し、ファイル サイズが 1MB を超えるものを降順でソートし、CSV形式で出力しています。

サイズの大きいフォルダを見つける

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ErrorActionPreference = "silentlycontinue"
$RootPath = "C:\"
$OutputCsvPath = ".\SortedDirectoryList.csv"

Get-ChildItem -Path $RootPath -Directory -Force -Recurse |
ForEach-Object {
$DirectoryPath = $_.FullName
Get-ChildItem $DirectoryPath -File -Force -Attributes !Offline |
Measure-Object -Sum Length |
Select-Object Sum, @{ Name = "DirectoryName"; Expression = { $DirectoryPath }}
} |
Where-Object {$_.Sum -gt 1GB} |
Sort-Object -Property Sum -Descending |
Export-Csv -Path $OutputCsvPath -NoTypeInformation -Encoding Default

処理の流れは、$RootPath 配下にあるサブフォルダを含むすべてのフォルダを取得し、各フォルダの配下にあるすべてのファイルの合計サイズを計算します。その後、1GB を超えるフォルダを降順でソートし、CSV形式で出力しています。

注意として、計算したフォルダ サイズには、サブ フォルダにあるファイルは、含んでいません。サブ フォルダにあるファイルを含みたい場合は、8行目の Get-ChildItem-Recurse オプションを追加してください。

免責事項

本サンプルコードは、あくまでもサンプルとして提供されるものであり、製品の実運用環境で使用されることを前提に提供されるものではありません。本サンプルコードおよびそれに関連するあらゆる情報は、「現状のまま」で提供されるものであり、商品性や特定の目的への適合性に関する黙示の保証も含め、明示・黙示を問わずいかなる保証も付されるものではありません。

マイクロソフトは、お客様に対し、本サンプルコードを使用および改変するための非排他的かつ無償の権利ならびに本サンプルコードをオブジェクトコードの形式で複製および頒布するための非排他的かつ無償の権利を許諾します。

但し、お客様は (1) 本サンプルコードが組み込まれたお客様のソフトウェア製品のマーケティングのためにマイクロソフトの会社名、ロゴまたは商標を用いないこと (2) 本サンプルコードが組み込まれたお客様のソフトウェア製品に有効な著作権表示をすること、および(3)本サンプルコードの使用または頒布から生じるあらゆる損害(弁護士費用を含む)に関する請求または訴訟について、マイクロソフトおよびマイクロソフトの取引業者に対し補償し、損害を与えないことに同意するものとします。

参考 URL

変更履歴

  • 2021/06/25 : 本 Blog の公開