Windows11下用PowerShell打印外部HP打印机PDF文件的问题
Windows 11下PowerShell批量打印PDF到HP打印机的解决方案
问题根源
你遇到的报错是因为系统未正确关联PDF文件的默认打印处理应用,Start-Process的print动词找不到对应的程序执行打印操作。
无第三方软件解决方案
利用Windows 11自带的Microsoft Edge浏览器处理PDF打印,直接指定Edge路径避免文件关联依赖,同时精准指定目标HP打印机:
步骤1:获取HP打印机准确名称
先运行以下命令,复制输出的HP打印机名称:
Get-Printer | Where-Object Name -like "*HP*" | Select-Object Name
步骤2:批量打印脚本
将脚本中的"你的HP打印机名称"替换为上一步获取的名称,在PDF文件所在目录执行:
# 获取Microsoft Edge安装路径 $edgePath = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe")."(Default)" # 按修改时间排序并批量打印PDF Get-ChildItem -Filter "*.pdf" | Sort-Object LastWriteTime | ForEach-Object { # 等待打印队列清空 while (@(Get-PrintJob -PrinterName "你的HP打印机名称").Count -gt 0) { Start-Sleep -Seconds 3 Write-Host "." -NoNewline } Write-Host "" Write-Host "正在打印:$($_.Name)" # 调用Edge后台打印到指定HP打印机 Start-Process -FilePath $edgePath -ArgumentList "--headless", "--disable-gpu", "--print-to-printer=`"你的HP打印机名称`"", "`"$($_.FullName)`"" -Wait }
脚本说明
--headless:Edge后台运行,不弹出窗口--disable-gpu:规避GPU相关打印异常--print-to-printer:指定目标HP打印机-Wait:等待当前文件打印完成后再处理下一个,防止队列拥堵
原方案问题修正
- 方案一存在语法错误:
$._Name应为$_.Name,且依赖PDF文件关联,依然会触发报错 - 方案二未指定目标打印机,易误打印到虚拟PDF打印机,同样依赖文件关联机制
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

