Возможности фильтрации командлета Get-ChildItem. Часть 2.

В этой статье мы рассмотрим применение параметра -Include в случаях когда параметр -Path содержит символы «*» в середине значения.

Это вторая часть серии.
Остальные статьи:
Возможности фильтрации командлета Get-ChildItem. Часть 1.
Возможности фильтрации командлета Get-ChildItem. Часть 3.

Давайте рассмотрим ситуацию, когда символ «*» находится не в конце, а середине значения параметра -Path.

Например, введя команду:

Get-ChildItem -Path C:\rootfolder\*\sub1

в качестве результата мы получим информацию о папках sub1, расположенных в каталогах C:\rootfolder\folder1 и C:\rootfolder\folder2.

11

Нужно отметить, что в данном случае не просходит получения дочерних элементов этих папок, а отображается информация только о них самих.

Для того, чтобы получить информацию об их дочерних элементах можно воспользоваться командой

Get-ChildItem -Path C:\rootfolder\*\sub1\*

но об этом чуть позже.

Подобный эффект дает и использование команды

Get-ChildItem -Path C:\rootfolder\*\sub1 -Include *

12

То есть, данной командой мы получаем информацию о всех дочерних элементах папок sub1, расположенных в каталогах C:\rootfolder\folder1 и C:\rootfolder\folder2.

Таким же образом, как и в примерах предыдущей статьи мы можем воспользоваться определенным значением параметра -Include для того, чтобы получить нужные нам элементы. Однако здесь мы сталкиваемся с некоторым нюансом, а именно: в случае использования символа «» внутри значения параметра -Path, в значении параметра -Include должны указываться имена всех папок в иерархии, начиная с уровня, представленного символом ««, включая имена папок уже указанных в значении параметра -Path.

То есть, для того, чтобы получить информацию о, например, файлах с расширением ps.1, расположенных в папках C:\rootfolder\folder1\sub1 и C:\rootfolder\folder2\sub1, нам нужно ввести следующую команду:

Get-ChildItem -Path C:\rootfolder\*\sub1 -Include folder1,folder2,sub1,*.ps1

13

Таким образом, в этой команде в качестве значения параметра -Include мы указали обе папки, находящиеся в каталоге rootfolderfolder1,folder2 (если не указать какую-либо из них, информация об файлах и каталогах, входящих в эту папку не будет выведена, что опять же можно использовать для исключения определенных папок ). Кроме того, мы указали папку sub1, находящуюся в каждом из каталогов folder1 и folder2, а также значение «*.ps1«, указывающее расширение нужных нам файлов.

Для того, чтобы, например,  вывести все содержимое папок sub1 (включая их подпапки), не используя -Include *, нам потребуется ввести следующую команду:

Get-ChildItem -Path C:\rootfolder\*\sub1 -Include folder1,folder2,sub1,sub2,*.ps1,*.xml

14

Теперь давайте увеличим количество звездочек.

Как уже говорилось выше, команда

Get-ChildItem -Path C:\rootfolder\*\sub1\*

выводит информацию обо всех дочерних элементах папок sub1.

15

Если в эту команду добавить параметр -Include *, мы получим список всех файлов папок sub1, а также список всех дочерних элементов папок, расположенных в каталогах sub1.

Get-ChildItem -Path C:\rootfolder\*\sub1\* -Include *

16

Происходит следующее. Команда получает список папок sub1, расположенных в каждой из иерархий каталогов, соответствующих значению параметра -Path, а именно: c:\rootfolder\folder1\sub1 и c:\rootfolder\folder2\sub1. Далее команда начинает обрабатывать дочерние элементы каждого из этих каталогов. В случае, если это файл — информация о нем включается в результаты выполнения команды, если же это папка — команда получает информацию о всех ее дочерних элементах.

В нашем случае команда начинает просматривать дочерние объекты каталога c:\rootfolder\folder1\sub1, а именно — sub2, file.ps1,file.xml, так как sub2 является каталогом, команда получает и выводит информацию о его дочерних элементах — sub3, file.ps1 и file.xml. Далее команда обрабатывает файлы входящие в каталог c:\rootfolder\folder1\sub1file.ps1 и file.xml и выводит их информацию в результатах выполнения.

Точно так же команда обрабатывает каталог c:\rootfolder\folder2\sub1.

Для получения информации, например, о файлах с расширением ps1, находящихся в каталогах c:\rootfolder\folder1\sub1\sub2 и c:\rootfolder\folder2\sub1\sub2 нам потребуется ввести слудеющую команду:

Get-ChildItem -Path C:\rootfolder\*\sub1\* -Include folder1,folder2,sub1,sub2,*.ps1

17

Здесь в качестве значения параметра -Include мы опять указываем имена всех папок в иерархии, начиная с самого первого уровня, представленного символом ««, а именно — folder1, folder2, sub1 и sub2. Для того, чтобы вывести только файлы с расширением ps1, мы добавляем значение «.ps1«.

И давайте в очерендной раз попробуем задать команду, эквивалентную использованию параметра -Include *.

Нам нужно указать имена всех папок в иерархии, начиная с самого первого уровня, представленного звездочкой — folder1, folder2, sub1 и sub2, всех папок, входящих в каталоги, на которые указывает значение параметра -Pathsub3 и некоторое обозначение входящих в них файлов, в нашем случае это — .ps1 и .xml.

В итоге получается следующая команда:

Get-ChildItem -Path C:\rootfolder\*\sub1\* -Include folder1,folder2,sub1,sub2,sub3,*.ps1,*.xml

18

Что касается дальнейшего увеличения длины пути или добавления звездочек, например:

Get-ChildItem -Path C:\rootfolder\*\sub1\*\sub3

или

Get-ChildItem -Path C:\rootfolder\*\sub1\*\sub3\*

то здесь действуют те же самые принципы, что и в примерах этой статьи, разве что количество элементов в значении параметра -Include будет увеличиваться.


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s