我有一个在 Windows 10 主机上运行 PowerShell 脚本的 Ansible 任务。在此 PowerShell 脚本中,它打开 Microsoft Word 文档,然后将其导出为 PDF。
脚本尝试创建
Word.Application
COM 对象失败:
$word = New-Object -COMObject Word.Application
它抛出这个错误:
由于以下错误,检索 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80080005 服务器执行失败(HRESULT 异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。
当我登录并从控制台手动运行它时,这才有效。
我发现this post有同样的错误,并尝试了建议的解决方案中的步骤(打开
dcomcnfg
并打开COM安全中的所有访问、启动和激活权限),但我仍然收到相同的错误.
有谁知道我如何才能实现此功能或者是否有更好的方法通过 PowerShell 将 Word 文档转换为 PDF 而不使用 COM?
参见:PowerShell 脚本在手动运行时可以工作,但在 Ansible 启动时无法创建 word.application 对象?
Word.Application
COM 对象需要交互式会话才能正常运行,这在通过 Ansible 远程运行脚本时可能不可用。调整 Ansible playbook 中的登录类型参数:
- name: Running my-script.ps1
win_shell: |
D:\\Repos\\my-repo\\my-script.ps1
vars:
ansible_become: true
ansible_become_method: runas
ansible_become_user: '{{ ansible_user }}'
ansible_become_password: '{{ ansible_password }}'
ansible_become_flags: logon_type=new_credentials logon_flags=netcredentials_only
试试这个,如果有帮助请告诉我。