tags:

views:

251

answers:

1

I would like to select any one ".xls" file in a directory. The problem is the dir can return different types.

gci *.xls

will return

  • object[] if there is more than one file
  • FileInfo if there is exactly one file
  • null if there is no files

I can deal with null, but how do I just select the "first" file?

+6  A: 

You can force PowerShell into returning an array, even when only one item is present by wrapping a statement into @(...):

@(gci *.xls)[0]

will work for each of your three cases:

  • it returns the first object of a collection of files
  • it returns the only object if there is only one
  • it returns $null of there wasn't any object to begin with


There is also the -First parameter to Select-Object:

Get-ChildItem *.xls | Select-Object -First 1
gci *.xls | select -f 1

which works pretty much identical to the above.

Joey