powershellpowershell-2.0

How do I get only directories using Get-ChildItem?


I'm using PowerShell 2.0 and I want to pipe out all the subdirectories of a certain path. The following command outputs all files and directories, but I can't figure out how to filter out the files.

Get-ChildItem c:\mypath -Recurse

I've tried using $_.Attributes to get the attributes but then I don't know how to construct a literal instance of System.IO.FileAttributes to compare it to. In cmd.exe it would be

dir /b /ad /s

Solution

  • For PowerShell 3.0 and greater:

    Get-ChildItem -Directory
    

    You can also use the aliases dir, ls, and gci


    For PowerShell versions less than 3.0:

    The FileInfo object returned by Get-ChildItem has a "base" property, PSIsContainer. You want to select only those items.

    Get-ChildItem -Recurse | ?{ $_.PSIsContainer }
    

    If you want the raw string names of the directories, you can do

    Get-ChildItem -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName