2012-06-04 2 views
1

Я пытаюсь использовать Powershell для получения имен файлов из сетевой папки. Мое понимание Get-ChildItems (пожалуйста, поправьте меня, если я ошибаюсь в этом) заключается в том, что командлет пытается загрузить весь объект, который в этом случае представляет собой серию установщиков продуктов размером от 25 до 315 МБ на файл ,Использование Powershell для получения только имен файлов из сетевой папки

Цель моего сценария - создать меню для пользователя, чтобы выбрать файл, который они хотели бы загрузить. Все работает, за исключением того, что для заполнения меню требуется 30 минут, что явно неприемлемо.

Я думаю, что мне может понадобиться включить некоторые .NET-классы для этой работы, но если я могу сделать это исключительно с Powershell, было бы хорошо. Любые мысли или предложения будут оценены.

$source = Get-ChildItem "\\networkdrive\Release\Installs\2012.1.2.3\" 
+3

Показать ваш код, пожалуйста. –

+2

Связанные: http://stackoverflow.com/questions/7196937/how-to-speed-up-powershell-get-childitem-over-unc – SirPentor

+1

Если вам просто нужны имена файлов и никаких других атрибутов, вы можете используйте параметр «-name» в Get-ChildItem. Я не уверен, но это может быть быстрее. – David

ответ

2

Я нашел другой способ сделать это, но он использует классы .NET, поэтому, строго говоря, он не полностью отвечает на мой собственный вопрос. Тем не менее, он выполняет свою работу, поэтому вот оно:

$source = [System.IO.Directory]::GetFiles("\\networkdrive\Release\Installs\2012.1.2.3", "*.exe") 
1
$source = Get-ChildItem "\\networkdrive\Release\Installs\2012.1.2.3\" | Where-Object{-Not $_.PsIsContainer} 

Это будет получить только файлы, но я не думаю, что есть много вы можете сделать о времени, которое требуется. Теоретически вы можете запустить его удаленно на сервере, где живет ресурс. Это будет быстрее. Не уверен, что это вариант в вашей среде или нет.

 Смежные вопросы

  • Нет связанных вопросов^_^