Find files across all drives using Powershell

I know how to search for files using dir/gci, but that only works across one drive AFAIK.

  • Is there a way to search across all drives on the computer?
  • Is there a way without manually enumerating then looping through the drives?
  • Is there a way to access the search indexes/services that are already available in windows, to speed up the search?

Solution 1:

This will list all ZIP files in decending size order by directory on all available drives:

get-psdrive -p "FileSystem" `
| % {write-host -f Green "Searching " $_.Root;get-childitem $_.Root -include *.ZIP -r `
| sort-object Length -descending}

Or search a specified list of Drives/Shares (e.g. C:, D: and \SERVER1\SHARE1...)

$paths="C:\","D:\","\\SERVER1\SHARE1" `
| % {write-host -f Green "Searching " $_;get-childitem $_ -include *.ZIP -r `
| sort-object Length -descending}

Solution 2:

$drive = get-psdrive
foreach ($a in $drive) {gci}

Not so bad... I can't think of a way without recursing all the drives like this, though.

See this page for info on searching the index.