使用PowerShell从服务器拉取打印驱动安装到工作站时报错咨询
问题背景
我的最终目标是解决Print Nightmare漏洞相关问题,为此我计划编写可通过GPO部署的脚本,用于安装打印驱动和网络打印机,以下是我正在调试的测试脚本:
测试脚本
pnputil.exe /a "\\j001-hal2010\HP Universal Print Driver\pcl6-x64-7.0.0.24832\hpcu250u.inf" Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Windows\System32\DriverStore\hpcu250u.inf" Add-PrinterPort -Name "TCPPort:10.1.1.193" -PrinterHostAddress "10.1.1.193" Add-Printer -DriverName "HP Universal Printing PCL 6" -Name "Cust Service HP Color LaserJet M653" -PortName "TCPPort:10.1.1.193"
遇到的问题
执行pnputil.exe /a "\\j001-hal2010\HP Universal Print Driver\pcl6-x64-7.0.0.24832\hpcu250u.inf"时返回如下错误:
添加驱动程序包失败:传入的参数为无效INF文件
对INF路径使用通配符匹配时也收到相同错误:pnputil.exe /a "\\j001-hal2010\HP Universal Print Driver\pcl6-x64-7.0.0.24832\*.inf"
添加驱动程序包失败:传入的参数为无效INF文件
总计尝试:0 成功导入数量:0
解决方法
- 优先排查权限问题:本地测试时必须以管理员身份运行终端,pnputil添加驱动需要系统级权限;如果是GPO部署,运行身份是计算机账户,需要给共享文件夹
\\j001-hal2010\HP Universal Print Driver开放域计算机组的读取权限,同时确认NTFS权限也对应配置,避免匿名访问被拦截。 - 规避UNC路径+空格的解析问题:路径包含空格和共享前缀时pnputil容易出现解析异常,建议先将驱动目录整体复制到本地临时路径再执行安装,示例操作:
New-Item C:\Temp\HPUD -ItemType Directory -Force Copy-Item "\\j001-hal2010\HP Universal Print Driver\pcl6-x64-7.0.0.24832\*" C:\Temp\HPUD -Recurse pnputil.exe /a "C:\Temp\HPUD\hpcu250u.inf" - 验证INF文件合法性:Print Nightmare补丁生效后,未签名或签名失效的驱动会被系统拦截,右键点击对应的inf文件,确认数字签名栏存在惠普官方的有效签名;同时确认驱动架构和目标系统架构匹配,避免用32位驱动给64位系统安装。
- 修正后续脚本逻辑:pnputil导入驱动后,实际存储路径是
C:\Windows\System32\DriverStore\FileRepository下的对应子目录,原脚本中写死的根目录路径不存在,建议导入驱动后直接通过驱动名称调用Add-PrinterDriver,无需手动指定InfPath参数。
内容的提问来源于stack exchange,提问作者Justice Baker
相关产品推荐
相关产品推荐

