PowerShellでディレクトリの中身を調べるときに欠かせないのが「Get-ChildItem」コマンドです。
Windowsのエクスプローラーでファイルを確認するのも良いですが、大量のファイルを扱うとき、拡張子でフィルタしたいとき、スクリプトで自動化したいときにはPowerShellのほうが圧倒的に便利。
この記事では、初心者にもわかりやすくGet-ChildItemの基本から、実用的な応用テクニックまで丁寧に解説します。
Get-ChildItemとは?基本の使い方

Get-ChildItem
(別名:gci
、dir
、ls
)は、指定したディレクトリのファイルやフォルダの一覧を取得するPowerShellコマンドレットです。
基本構文
Get-ChildItem -Path "パス"
例1:カレントディレクトリ内の一覧取得
Get-ChildItem
例2:特定のパス内の一覧を取得
Get-ChildItem -Path "C:\Users\YourName\Documents"
よく使う便利オプション

-Recurse(サブディレクトリも含めて取得)
Get-ChildItem -Path "C:\Logs" -Recurse
→ C:\Logs 以下のすべてのサブフォルダ内のファイルまで一覧表示されます。
-Filter(特定のファイルだけ取得)
Get-ChildItem -Path "C:\Logs" -Filter "*.log"
→ 拡張子が .log
のファイルだけを表示。
-Include と -Exclude(複数条件でフィルタリング)
# .log と .txt ファイルだけを取得
Get-ChildItem -Path "C:\Logs" -Include "*.log","*.txt" -Recurse
# .tmp ファイルを除外
Get-ChildItem -Path "C:\Logs" -Exclude "*.tmp" -Recurse
-File / -Directory(ファイルだけ・フォルダだけ)
#ファイルだけ
Get-ChildItem -Path "C:\Data" -File
#フォルダだけ
Get-ChildItem -Path "C:\Data" -Directory
→ ファイルだけ、またはフォルダだけをリストアップできます。
-Hidden(隠しファイルも表示)
Get-ChildItem -Path "C:\Windows" -Hidden
応用編:パイプと組み合わせてさらに強力に!

例:30日以上前に作成されたファイルを取得
Get-ChildItem -Recurse | Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-30) }
例:特定のサイズ以上のファイルを抽出
Get-ChildItem -Path "C:\Data" -Recurse | Where-Object { $_.Length -gt 10MB }
例:取得した一覧をCSVで保存
Get-ChildItem -Path "C:\Logs" -Recurse | Export-Csv -Path "file_list.csv" -NoTypeInformation
例:ファイル名を昇順で並べ替え
Get-ChildItem | Sort-Object Name
例:最も新しいファイルを5つ表示
Get-ChildItem -File | Sort-Object LastWriteTime -Descending | Select-Object -First 5
Get-ChildItemの出力をカスタマイズ

必要な情報だけを表示
Get-ChildItem | Select-Object Name, Length, LastWriteTime
サイズをMBで表示
Get-ChildItem -File | Select-Object Name, @{Name="Size(MB)"; Expression={$_.Length / 1MB}}
テーブル形式で見やすく表示
Get-ChildItem | Format-Table Name, Length, LastWriteTime -AutoSize
Get-ChildItemが活躍するシーン
- バックアップ対象の選別
- ログファイルの自動抽出
- 容量の大きなファイルの特定
- 定期的なファイルメンテナンス
- 開発環境の一括チェック
PowerShellスクリプトに組み込むことで、毎日の業務を自動化することも可能です。
実践例:古いログファイルを削除するスクリプト
$logPath = "C:\Logs"
$daysToKeep = 30
# 30日より古いログファイルを取得して削除
Get-ChildItem -Path $logPath -Filter "*.log" -Recurse |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$daysToKeep) } |
ForEach-Object {
Write-Host "削除: $($_.FullName)"
Remove-Item $_.FullName
}
よくあるトラブルと対処法

パーミッションエラーが出る
- 原因:一部のフォルダにアクセス権がない
- 解決策:PowerShellを管理者権限で実行するか、
-ErrorAction SilentlyContinue
でエラーを無視する
Get-ChildItem -Path "C:\System" -Recurse -ErrorAction SilentlyContinue
大量のディレクトリを再帰的に検索すると遅い
- 原因:大量のファイルを処理する必要がある
- 解決策:検索範囲を絞る、または
-Depth
パラメータで深さを制限する
Get-ChildItem -Path "C:\Data" -Recurse -Depth 2
まとめ|Get-ChildItemはファイル操作の第一歩
Get-ChildItem
は、PowerShellを学び始めた人にとって最初にマスターすべき重要なコマンドです。
単なるファイル一覧取得にとどまらず、フィルタ・条件指定・再帰検索・CSV出力など、組み合わせ次第で非常に強力なツールになります。
本記事のポイント:
Get-ChildItem
はファイル・フォルダの一覧取得に使う-Recurse
や-Filter
などのオプションで柔軟に操作Where-Object
との組み合わせで応用力アップSelect-Object
やSort-Object
で出力をカスタマイズ- 管理者権限やエラー処理にも注意
PowerShellを使いこなす第一歩として、ぜひGet-ChildItem
を自在に扱えるようになってください!
この基本コマンドをマスターすれば、ファイル管理の効率が格段に向上します。
PowerShellでのファイル一覧取得から始めて、徐々にスクリプト化や自動化へとステップアップしていきましょう。
コメント