Powershell: get-childitem не работает с фильтрами

У меня есть 3 файла ps1 в папке d:

-a---         6/19/2015   2:52 PM        104 Untitled1.ps1                                                                                                                       
-a---         6/19/2015   2:56 PM        204 Untitled2.ps1                                                                                                                       
-a---         6/16/2015   1:17 PM       3073 Untitled3.ps1  

Я могу использовать get-childitem, чтобы получить их:

get-childitem d:\

Но это не удается:

 get-childitem d:\ -Force -Include *.ps1

Эта команда ничего не показывает. Почему? Я просто хочу отфильтровать файл .ps1. Что-то не так с моей командой?


person vik santata    schedule 19.06.2015    source источник


Ответы (1)


Параметр Include действует только тогда, когда команда включает параметр Recurse или путь ведет к содержимому каталога, например C: \ Windows *, где подстановочный знак указывает содержимое каталога C: \ Windows.

Источник: https://technet.microsoft.com/en-us/library/hh849800.aspx

Вместо этого вы можете использовать параметр -Filter:

Get-ChildItem -Path 'd:\' -Filter '*.ps1'

Или, если вам нужно отфильтровать несколько расширений, используйте подстановочный знак:

Get-ChildItem -Path 'd:\*' -Include '*.ps1', '*.bat'
person Martin Brandl    schedule 19.06.2015
comment
Что, если я хочу отфильтровать 2 типа файлов: ps1 и bat. Как написать эту команду? - person vik santata; 19.06.2015