我有一个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提示符下工作,但是同样,从快捷方式启动时失败。
谢谢。
答案 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