从作为Windows服务运行的脚本/应用程序打印

时间:2017-01-19 14:16:30

标签: java powershell batch-file ms-word windows-services

我有一点(至少对我而言)奇怪的问题。我创建了一个(Java)应用程序(当满足某些条件时)运行PowerShell脚本,该脚本使用MS-Word打印某些文档。我通过一个简单的批处理文件(java调用)来运行这个应用程序。

当我通过我的批处理运行应用程序时,它就像一个魅力,,当我(使用NSSM或AlwaysUp)将其转换为Windows服务时,触发打印过程失败。我在任务管理器中看到MS-Word进程已启动,它占用了大量CPU,但它什么也没做(无论我等多久)。

简化代码:

$objOffice = New-Object -comobject Excel.Application
$objDoc = $objOffice.Workbooks.Open("C:\printTest\printFile.xlsx")
$objDoc.printout()
$objDoc.Close($false)
$objOffice.quit()

我也在其他计算机上测试了这个......结果相同。

同样有趣: 编辑:这部分写的是我的错,并修复了它。

此时我甚至不确定它与powershell命令有什么关系,但我没有想法。

1 个答案:

答案 0 :(得分:0)

Start-Process -FilePath 'C:\printTest\printFile.xlsx' -Verb print

另外,请查看this page,其中包含

  

您可能会注意到“允许服务与桌面交互”选项,我们之前提到过 - 默认情况下,服务不是   除非选中此框,否则允许访问您的桌面   复选框实际上仅用于遗留支持。

     

但只是检查   那个盒子不会立即让他们访问 - 你也需要   确保设置了注册表中的NoInteractiveServices值   为0,因为当它设置为1时,忽略该复选框   服务根本无法与桌面交互。注意:在Windows 8中,   该值设置为1,禁止交互式服务。