Get-ChildItem
- это командлет провайдера - это означает, что большая часть его фактической работы выгружается базовому провайдеру, вероятно, провайдеру FileSystem
в вашем случае.
Сам провайдер на самом деле неподдерживать параметры -Include
/ -Exclude
, это одна из немногих вещей, которую командлет берет на себя, и для поставщика файловой системы это очень тяжелая двойная работа, поскольку командлет должен выполнять обратный просмотр в иерархии файловой системы.чтобы выяснить, нужно ли применять исключение или включение на основе имени родительского каталога, вы можете посмотреть, как это реализовано здесь .
Таким образом, используя -Include
против файласистемный провайдер, вы просите PowerShell выполнить огромное количество двойной работы.