我有一个powershell脚本将.doc转换为.pdf文件。当我手动执行它时,它在我的Windows Server 2012上完美运行。
当我将其作为计划任务执行时,打开Word的实例,但无法关闭它,并且任务无法正确结束。最糟糕的是,这个过程使用了10%的处理器,当任务再次运行时,另一个在它上面打开,并且这使用100%的cpu继续发生。
两次,手动和从计划任务运行它作为管理员...并且任务很好地创建,如果我修改脚本并且不打开Word并且仅仅例如创建.txt文件,工作正常。所以它存在的问题。 “从任务调度程序打开单词”
这是脚本,也是截图。任何帮助将不胜感激!
$origen = 'C:\Test'
$destino = 'C:\Test'
$word_app = New-Object -ComObject Word.Application
echo "Buscando cambios en las carpetas de origen..."
Get-ChildItem -Path $origen -Filter *.doc? | ForEach-Object {
if (-Not (Test-Path "$destino\$($_.BaseName).pdf")) {
$document = $word_app.Documents.Open($_.FullName)
$pdf_filename = "$destino\$($_.BaseName).pdf"
echo "$($_.FullName) convertido a $pdf_filename!"
$document.SaveAs([ref] $pdf_filename, [ref] 17)
$document.Close()
}
}
$word_app.Quit()
我没有看到任何截图。
—
dangph
我不清楚的事情:一次可以运行多个脚本实例吗?如果是这种情况,那么您将在Word中执行多个并发操作,但Word不是为此而设计的。它一次只能做一件事。 Word是单用户客户端应用程序。它不是设计用作可以处理多个同时请求的服务器应用程序。我记得有一篇来自MS的知识库文章。
—
dangph
什么帐户运行任务?可以尝试将可见性设置为false,以便启动该过程但尝试显示窗口。
—
Shawn Melton
添加管理员 以批处理作业登录 每GPO。这可能有所帮助。
—
Berndinox
之前已解释过在非桌面环境中使用Office COM对象的限制: superuser.com/questions/730474/...
—
MFT