もくじ
📝 はじめに
PowerShellでフォルダ構成を確認していると、
「ファイルはいらないので、フォルダだけを一覧で見たい」
「ディレクトリ単位で処理したいのに、ファイルが混ざってしまう」
と感じることはありませんか?
そんなときに便利なのが
Get-ChildItem -Directory です。
これを使うことで、フォルダ(ディレクトリ)だけを確実に抽出できます。
- フォルダ構成だけを把握したい
- ディレクトリ単位で処理を行いたい
- 不要なファイルを除外したい
✅ このコマンドでできること(要点)
- ファイルを除外してフォルダのみ取得できる
- Where-Object を使わず簡潔に書ける
- -Recurse と組み合わせて再帰的に取得できる
- スクリプトの可読性が向上する
✅ Get-ChildItem -Directory でできること
-Directory は、
Get-ChildItem の結果から
フォルダ(ディレクトリ)だけを抽出するためのパラメーターです。
これにより、ファイルが混ざることなく、
フォルダ構成やディレクトリ単位の処理に集中できます。
考え方としては「棚の中から箱だけを取り出す」と覚えると分かりやすいでしょう。
🧩 基本構文
Get-ChildItem -Directory
パスを省略した場合は、現在の作業ディレクトリが対象になります。
▶ 基本的な使い方(まずこれだけ)
🔹 カレント配下のフォルダのみを表示する
Get-ChildItem -Directory
フォルダだけが表示されていれば成功です。
ファイルが含まれていなければ問題ありません。
🔹 指定フォルダの直下フォルダのみを表示
Get-ChildItem C:\Projects -Directory
指定フォルダ直下にあるフォルダだけが一覧表示されます。
エラーが出なければ正常に動作しています。
🛠 よく使われる指定例
🔹 再帰的にフォルダのみ取得
Get-ChildItem -Directory -Recurse
サブフォルダを含め、すべてのフォルダを対象にします。
🔹 名前でフォルダを絞り込む
Get-ChildItem -Directory -Filter "202*"
名前が 202 で始まるフォルダのみを取得します。
💼 実務でよく使う使用例(応用)
🔹 フォルダ単位で処理を実行する
Get-ChildItem -Directory |
ForEach-Object {
$_.FullName
}
🔹 空のフォルダを探す
Get-ChildItem -Directory |
Where-Object { (Get-ChildItem $_.FullName).Count -eq 0 }
- -Recurse で階層全体を対象にする
- -Filter でフォルダ名を限定
- Where-Object で条件判定
🧩 よくある勘違い・つまずきポイント
- -Directory を付けないとファイルも混ざる
- -File と同時には指定できない
- PowerShell 5.1 以前では使用できない
- -Recurse で対象が多くなりすぎることがある
- アクセス権限のないフォルダでエラーが出る場合がある
🔄 cmdとの違いについて
cmd では dir /ad を使いますが、
PowerShell の Get-ChildItem -Directory は
より直感的で読みやすく指定できます。
結果をオブジェクトとして扱える点も大きな違いです。
⚠ エラー・うまく動かないときの確認ポイント
- PowerShell のバージョンが 6 以降か
- -Recurse による探索範囲が広すぎないか
- 対象フォルダのアクセス権限があるか
- -Filter の指定が正しいか
🧠 注意点
-Directory は
フォルダ専用の指定のため、
Windows PowerShell 5.1 を使用している場合は利用できません。
その場合は
Where-Object { $_.PSIsContainer }
で代替できます。
📌 まとめ
- -Directory を使うとフォルダのみを抽出できる
- フォルダ構成の確認や一括処理に便利
- -Recurse と組み合わせると強力
- 用途に応じて -File と使い分けるのがポイント
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- フォルダのみを抽出したい
- 一覧を表示したい
- 条件で絞り込みたい
- 再帰的にフォルダを調査したい
- エラーや実行できない原因を調べたい
- ディレクトリ構成を把握したい
- 空フォルダを探したい
