【初心者向け】PowerShellの「Get-ChildItem」完全ガイド|ファイル一覧取得の基本と応用テクニック

Windows

PowerShellでディレクトリの中身を調べるときに欠かせないのが「Get-ChildItem」コマンドです。

Windowsのエクスプローラーでファイルを確認するのも良いですが、大量のファイルを扱うとき、拡張子でフィルタしたいとき、スクリプトで自動化したいときにはPowerShellのほうが圧倒的に便利

この記事では、初心者にもわかりやすくGet-ChildItemの基本から、実用的な応用テクニックまで丁寧に解説します。

スポンサーリンク

Get-ChildItemとは?基本の使い方

Get-ChildItem(別名:gcidirls)は、指定したディレクトリのファイルやフォルダの一覧を取得する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-ObjectSort-Objectで出力をカスタマイズ
  • 管理者権限やエラー処理にも注意

PowerShellを使いこなす第一歩として、ぜひGet-ChildItemを自在に扱えるようになってください!

この基本コマンドをマスターすれば、ファイル管理の効率が格段に向上します。

PowerShellでのファイル一覧取得から始めて、徐々にスクリプト化や自動化へとステップアップしていきましょう。

コメント

タイトルとURLをコピーしました