Попробуйте:
$Folder1 = get-childitem $TargetFolder1 -filter *.xml
Гораздо быстрее, чем при использовании include
(для большого набора файлов).Или даже лучше:
get-childitem $TargetFolder1 -filter *.xml | % {}
РЕДАКТИРОВАТЬ
Теперь я вижу, ваши проблемы связаны с include
!Если вам нужно использовать подстановочные знаки и ни регулярные выражения для получения дочернего элемента, используйте вместо этого filter
.Гораздо эффективнее, потому что не использует сопоставление регулярных выражений.
Попробуйте:
$Folder1 = get-childitem $TargetFolder1 -filter *
, даже если не очень понятно, что вы там фильтруете (или хотите включить) ... все?Может быть, вам вообще не нужен подстановочный знак.
По моему скромному мнению, лучший способ предотвратить цикл foreach в памяти - это трубопровод .Однако из-за характера вашего сценария (многие вложенные элементы управления внутри цикла) это не так просто.
Попробуйте с:
$Folder1 | % {
# ...
}
, даже если я сомневаюсь, что это улучшит производительность.
или:
get-childitem $TargetFolder1 -include * | % {
# ...
}