New-Object -ComObject Word.Application

时间:2018-08-18 13:26:10

标签: powershell

我们创建了多个powershell脚本,这些脚本从Word文档读取并提取所需的信息。

在笔记本电脑上本地均可正常运行,但是当我们在生产服务器上部署...时,它们将无法正常工作。

我们通过asp.net Web应用程序运行Powershell脚本...这是引用WORD.APPLICATION的任何Powershell脚本都不起作用的地方

我们在生产服务器上部署的组件:

  • 操作系统:Windows Server 2012
  • Powershell:版本5
  • 已安装MsOffice 2010
  • Asp.net 4.5已安装所有组件

我们已经在ASP.NET 4.5 Core中创建了Web应用程序,在该应用程序中,将搜索用户上载文档以及基于特定条件的文档以查找特定的关键词。如果找到关键术语,将显示值。

Asp.net调用powershell脚本,该脚本具有要搜索的所有文档库代码。除非引用了WORD-APPLICATION代码,否则所有内容都将在PS脚本中执行。

有人在服务器上部署它们时遇到任何问题吗?

1 个答案:

答案 0 :(得分:1)

必读:

  

https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office

     

所有当前版本的Microsoft Office都经过设计,测试和配置,可以作为最终用户产品在客户端工作站上运行。他们假定交互式桌面和用户个人资料。它们没有提供满足旨在无人值守运行的服务器端组件的需要所必需的可重入性或安全性级别。

     

...

     

除了技术问题外,您还必须考虑许可问题。当前的许可准则禁止在服务器上使用Office应用程序来满足客户端请求,除非这些客户端本身具有Office的许可副本。最终用户许可协议(EULA)并未涵盖使用服务器端自动化向未经许可的工作站提供Office功能。

如您所见,您正尝试的方案在官方上不受支持,并且许可证方面的费用非常昂贵,因为您正式要求每个调用功能或用户的用户都需要Office许可证调用功能。

有一个正式的Open XML SDK,它将允许在服务器端处理基于XML的Office文档:

如果这还不够的话,有很多第三方库可以提供服务器端的执行,并且不需要办公室许可,有些是商业的,有些是开源的:

有几种方法可以使代码从ASP.NET应用程序在服务器上运行。它们在官方上不受支持,它们使您的服务器面临许多额外的安全问题,从许可的角度看它们非常昂贵,并且不能保证它们将继续工作。