Вы можете заставить PowerShell возвращать массив, даже если присутствует только один элемент, поместив оператор в @(...)
:
@(gci *.xls)[0]
будет работать для каждого из трех ваших случаев:
- возвращает первый объект коллекции файлов
- возвращает единственный объект, если есть только один
- возвращает
$null
из-за отсутствия какого-либо объекта для начала
Существует также параметр -First
для Select-Object
:
Get-ChildItem -Filter *.xls | Select-Object -First 1
gci -fi *.xls | select -f 1
, который работает почти так же, как и выше, за исключением того, что список файлов не нужно полностью перечислять Get-ChildItem
, так как конвейер прерывается после первого элемента. Это может иметь значение, когда есть много файлов, соответствующих фильтру.