You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

有没有PowerShell命令可后台静默打印PDF与Word文档?

静默打印Word和PDF文档的PowerShell方案

你之前用Get-Content -Path [path] | Out-Printer的方法之所以失效,是因为这个命令只是读取文件的纯文本内容并传递给打印机,没有调用对应文档格式的打印驱动,所以会触发打开关联程序且无法完成正确打印。下面是两种文档类型的静默打印方案:

Word文档静默打印

利用Word的COM自动化接口,能实现完全后台打印,不会弹出Word窗口:

# 替换为你的Word文档路径
$docPath = "C:\Example\Document.docx"

$wordApp = New-Object -ComObject Word.Application
$wordApp.Visible = $false # 强制隐藏窗口
$document = $wordApp.Documents.Open($docPath)
$document.PrintOut()
$document.Close()
$wordApp.Quit()

# 释放COM对象,避免残留Word进程
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($document) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($wordApp) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
  • 前提是系统已安装Microsoft Office Word组件
  • 若打印时需要调整参数(比如指定打印机、份数),可以给PrintOut()方法传递对应参数,比如$document.PrintOut($false, $false, $null, $null, "打印机名称")

PDF文档静默打印

方法1:Windows Shell原生方法(无需额外软件)

通过Shell.Application调用PrintTo动词,实现后台打印,部分PDF阅读器会在后台短暂运行但不显示窗口:

$pdfPath = "C:\Example\File.pdf"
# 可通过Get-Printer命令获取你的打印机名称,留空则用默认打印机
$printerName = "你的打印机名称"

$shell = New-Object -ComObject Shell.Application
$folder = $shell.Namespace((Split-Path $pdfPath -Parent))
$fileItem = $folder.ParseName((Split-Path $pdfPath -Leaf))

# 调用静默打印
if ($printerName) {
    $fileItem.InvokeVerbEx("PrintTo", $printerName)
} else {
    $fileItem.InvokeVerbEx("Print")
}

# 释放COM对象
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($fileItem) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($folder) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($shell) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()

方法2:Ghostscript(更彻底的无界面打印)

如果需要完全无任何后台进程弹出,可以安装Ghostscript(开源免费)后使用命令行打印:

# 替换为你的Ghostscript安装路径和打印机名称
$gsPath = "C:\Program Files\gs\gs10.02.1\bin\gswin64c.exe"
$printer = "你的打印机名称"
$pdfPath = "C:\Example\File.pdf"

& $gsPath -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -sDEVICE=mswinpr2 -sOutputFile="%printer%$printer" $pdfPath
  • Ghostscript官网可下载安装包,安装后注意替换路径中的版本号
  • 此方法不依赖任何PDF阅读器,完全在命令行后台执行

内容的提问来源于stack exchange,提问作者user21520585

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:20:59