非默认状态下指定打印机执行Print命令失效问题求助
解决指定打印机打印文件的问题
你的命令问题在于Start-Process -Verb Print是调用系统关联程序打开文件并触发打印,这个操作不会向PowerShell管道输出任何可处理的内容,所以后面的| Out-Printer -Name "UNBILLING"完全不起作用,只能依赖系统默认打印机。
以下是几种可行的解决方案:
方法一:直接读取文本内容并打印(适合文本文件)
如果你的$archivo是文本文件,直接读取内容后通过Out-Printer指定打印机即可:
Get-Content "$root\UNB\FINAL_TEXTO\$archivo" | Out-Printer -Name "UNBILLING"
方法二:使用cmd的print命令指定打印机
通过调用cmd的原生print命令,直接指定目标打印机:
cmd /c print /d:"UNBILLING" "$root\UNB\FINAL_TEXTO\$archivo"
方法三:使用.NET类实现更灵活的打印控制
如果需要更多打印参数控制,可以用.NET的PrintDocument类(以文本文件为例):
$printerName = "UNBILLING" $filePath = "$root\UNB\FINAL_TEXTO\$archivo" $printDoc = New-Object System.Drawing.Printing.PrintDocument $printDoc.PrinterSettings.PrinterName = $printerName $printDoc.add_PrintPage({ param($sender, $e) $content = Get-Content $filePath -Raw $font = New-Object System.Drawing.Font("Arial", 10) $e.Graphics.DrawString($content, $font, [System.Drawing.Brushes]::Black, 10, 10) }) try { $printDoc.Print() } catch { Write-Error "打印失败: $_" } finally { $printDoc.Dispose() }
选择哪种方法取决于你的文件类型和需求,前两种方法对于简单文本文件足够高效,第三种适合需要自定义打印格式的场景。
内容的提问来源于stack exchange,提问作者Juan Manuel Sanchez
相关产品推荐
相关产品推荐

