从快捷方式启动脚本时,Powershell找不到PNPUTIL

时间:2018-11-13 20:55:38

标签: powershell

我有一个Powershell脚本,用于在Windows 10上安装TCP / IP打印机,该脚本使用PNPUTIL加载驱动程序。当从Powershell窗口运行脚本时,一切正常。

当我使用格式

从快捷方式启动脚本时
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -file MyScript.PS1

调用PNPUTIL时收到错误消息“'pnputil.exe'未被识别为cmdlet,函数,脚本文件或可运行程序的名称”。脚本的其余部分运行正常。

相关代码:

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"

中引用

Running CMD command in PowerShell

但是我仍然得到错误。我也尝试过

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

但是出现了类似的错误,即找不到pnputil.exe。

这两个选项都可以在Powershell提示符下工作,但是同样,从快捷方式启动时失败。

谢谢。

1 个答案:

答案 0 :(得分:1)

您正在64位系统上调用PowerShell的 32位实例 ,并且该实例看不到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位可执行文件。

如果由于某种原因确实需要运行PowerShell的32位实例,则可以通过其完整路径调用pnputil.exe
它仅作为64位可执行文件存在于64位系统文件夹中,该32位进程可以以C:\Windows\SysNative的身份访问:

C:\Windows\SysNative\pnputil.exe