тд; др
$b = Get-ChildItem "E:\Export" -Filter ('*' + $a)
Или, используя расширение строки PowerShell (интерполяция):
$b = Get-ChildItem "E:\Export" -Filter "*$a"
-Filter
значения параметров:
Поскольку вы имеете дело с файлами , именно поставщик FileSystem
PS интерпретирует -Filter
и ожидает шаблонное выражение в качестве аргумента, как принято базовым API Windows;подстановочное выражение неявно сопоставляется с файлом name .
Примечание:
Обычно - как в этом случае - такие подстановочные выражения работаютто же самое, что и собственные символы подстановки PowerShell , но первые имеют причуды для поддержки устаревших приложений, в то время как последние предлагают дополнительные функции.
Ни один стандартный поставщик не принимает блоки сценариев с произвольным кодом PowerShell в качестве -Filter
аргументов, несмотря на их широкое распространение - но ошибочное - использование с поставщиком Active Directory - см. этот ответ .
Чтобы выполнить произвольную фильтрацию выходных объектов через блоки сценариев в коде PowerShell , передайте командлет Where-Object
, как показано в ответе LotPings .
Однако, , если это возможно, использование -Filter
всегда должно быть первым выбором , потому что он фильтрует в источнике , что означает, что поставщик возвращает alreотфильтрованные по ady результаты в PowerShell (в отличие от необходимости фильтровать результаты по факту в коде PowerShell), что может значительно ускорить операции .