Powershell не находит PNPUTIL при запуске скрипта из ярлыка - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть скрипт Powershell для установки принтеров TCP / IP в Windows 10, который использует PNPUTIL для загрузки драйверов.Когда скрипт запускается из окна Powershell, все отлично работает.

Когда я запускаю скрипт из ярлыка в формате

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -file MyScript.PS1

, я получаю сообщение об ошибке «Термин« pnputil.exe »не распознается как имя командлета, функции,файл сценария или работоспособная программа, когда вызывается PNPUTIL.Остальная часть сценария работает нормально.

Соответствующий код:

Write-Host `n 'Installing printer driver..'
pnputil.exe /add-driver "\\myServer\HP UPD PCL 5\hpcu180t.inf"

Есть идеи, почему это не будет работать при запуске из ярлыка?

РЕДАКТИРОВАТЬ:Я попытался использовать

& pnputil.exe /add-driver "\\myServer\HP UPD PCL 5\hpcu180t.inf"

, как указано в

Запуск команды CMD в PowerShell

, но все равно получаю ошибку.Я также попытался

start-process pnputil.exe /add-driver "\\myServer\HP UPD PCL 5\hpcu180t.inf"

, но получил аналогичную ошибку, что pnputil.exe не может быть найден.

Обе эти опции работают в приглашении Powershell, но, опять же, не запускаются при запуске изярлык.

Заранее спасибо.

1 Ответ

0 голосов
/ 14 ноября 2018

Вы вызываете 32-битный экземпляр PowerShell в 64-битной системе, и этот экземпляр не видит pnputil.exe (только по имени файла).

Вместо:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -file MyScript.PS1

использование:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file MyScript.PS1
  • Папка C:\Windows\SysWOW64 - это место хранения 32-битных исполняемых файлов.
  • Как это ни парадоксально, но по историческим причинам это C:\Windows\System32 содержит 64-битные исполняемые файлы.

Если по какой-то причине вам необходимо запустить 32-разрядный экземпляр PowerShell, вы можете вызвать pnputil.exe по его полному пути:
Он существует только в виде 64-разрядного исполняемого файла в 64-разрядной системной папке, к которому 32-разрядные процессы могут обращаться как C:\Windows\SysNative:

C:\Windows\SysNative\pnputil.exe
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...