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