2014-12-05 5 views
2

Я пытаюсь рекурсивно искать каталог, находить любые .inf-файлы внутри и передавать эти файлы в pnputil, чтобы добавить эти драйверы в каталог драйверов Windows.powershell pass .inf files to pnputil

У меня есть следующие:

cd /drivers 

$x = ls -Path . -Filter "*.inf" -Recurse -ErrorAction SilentlyContinue 

Foreach ($i in $x){ 
    pnputil /a $i 
} 

и я получаю следующее сообщение об ошибке от PNPUTIL:

Добавление пакета драйверов не удалось: Invalid INF передается в качестве параметра.

Я предполагаю, что он терпит неудачу, потому что pnputil не любит объект, который он получает. Любое предложение о том, что передать его или что изменить?

Спасибо!

+0

'& pnputil/a $ i.FullName' возможно .. im im im close. У вас есть объект DirectoryInfo. Вам просто нужно использовать свойство fullname – Matt

+0

Красиво, что это точно, Пожалуйста, опубликуйте как ответ – andrsnn

ответ

2

Вы знали, в чем проблема. Вы передаете объект в командную строку. Что вам нужно сделать, это извлечь полный путь от этого System.IO.FileInfo объекта перейти к pnputil

Foreach ($i in $x){ 
    & pnputil /a $i.FullName 
} 

что вы должны получить результаты, которые вы ищете. Еще одна вещь, которую вы могли бы сделать, это изменить $x так, чтобы это был массив имен файлов. -ExpandProperty является важной частью.

$x = ls -Path . -Filter "*.inf" -Recurse -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Fullname 

Foreach ($i in $x){ 
    pnputil /a $i 
} 
+0

Вы правы, я думаю, что я сбивал с толку, когда я перебирал объект, чтобы выбрать, '$ i | выберите полное имя', затем pnputil. Глупо спасибо! – andrsnn

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

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