-Exclude
хорош для имен файлов, однако не имеет хороший послужной список для имени папки \ путь исключения. Вы должны использовать предложение Where-Object
, чтобы решить эту проблему.
$Files = Get-ChildItem -Path "D:\depot\main" -Recurse -Include "*.exe" -Exclude "HWEMNGR.EXE","wmboot.exe","SDClientMobileEdition.exe" |
Select-Object -ExpandProperty FullName |
Where-Object{$_ -notmatch "\\FolderName\\"}
Сниппет % { $_.FullName }
был заменен Select-Object -ExpandProperty FullName
, который делает то же самое. Затем мы используем Where-Object
, чтобы исключить пути, где FolderName не существует. Это регулярное выражение, поэтому мы удваиваем число косых черт. Это также помогает убедиться, что мы исключаем папки, а не файл, который можно было бы назвать «FolderName.exe»
Альтернативный подход
Как TheMadTechnician указывает, что вы пришли на это с другого направления и просто обеспечить файлы из всех двух папок, которые вам действительно нравятся. Get-ChildItem
возьмет массив для путей, чтобы вы могли также использовать что-то вроде этого.
$paths = "D:\depot\main\install","D:\depot\main\debug"
$excludes = "HWEMNGR.EXE","wmboot.exe","SDClientMobileEdition.exe"
$Files = Get-ChildItem $paths -Filter "*.exe" -Exclude $excludes | Select-Object -ExpandProperty FullName
$paths
это только две папки, которые вы хотите получить результаты. Вы по-прежнему исключаете файлы, которые вам не нужны, а затем просто возвращаете полные пути к файлам.
Из-за того, что вы должны получить все, а затем исключить, если у него есть только 2 подпапки, которые он хочет, может быть быстрее получить корневую папку, а затем получить 2 подпапки, которые он хочет рекурсивно. Таким образом, он не получает содержимое третьей папки, а затем исключает ее. Для маленьких наборов, подобных этому, иногда немного дополнительной работы впереди стоит времени в конце. – TheMadTechnician
@ TheMadTechnician Включено предложение, основанное на вашем комментарии. Предполагая, что я понял ..... – Matt
Да, выглядит правильно. Возможно, вы захотите включить «D: \ Depot \ Main» в пути. – TheMadTechnician