在构建项目时,我们正在尝试使用 Jenkins 将一组“工作文档”转换为“发布文档”。这涉及获取 .docx 文件并将它们保存为 .pdf 文件,我们使用以下 Powershell 脚本完成:
$documents_path = "E:\Documentation\Working Documents\"
$word_app = New-Object -ComObject Word.Application
echo $word_app
# This filter will find .doc as well as .docx documents
$files = Get-ChildItem -Path $documents_path -Filter *.doc?
ForEach ($file in $files) {
echo "Converting Document to PDF: $($file.FullName)"
$document = $word_app.Documents.Open($file.FullName)
$pdf_filename = "$($file.DirectoryName)\..\Release Documents\$($file.BaseName).pdf"
$document.SaveAs([ref] $pdf_filename, [ref] 17)
$document.Close()
}
$word_app.Quit()
现在,当我登录 Jenkins PC 并自己在 Powershell 中运行它时,该脚本 100% 以我们预期的方式运行。然而,当 Jenkins 尝试运行它时,我们得到You cannot call a method on a null-valued expression
了$document.SaveAs
and $document.Close
。
我认为这是因为用户 Jenkins 运行时SYSTEM
没有访问 .docx 文件的权限,或者找不到 Word 安装或类似的东西,但我想不出我应该如何尝试调试它比这更进一步。非常感谢任何提示!