2

好的,所以我编写了一个非常强大的 PowerShell 脚本来安装和配置 SharePoint 2007 和 SQL 2008。就是这样,请不要评判我。在完成所有这些之后,因为脚本应该是用户友好的,所以我开发了一个 Web 表单来收集输入并显示任务进度。愚蠢的是,我在 Windows 8.1 上编写了 Web 表单的所有代码,甚至没有在将执行脚本的 Server 2008 R2 上测试基本功能。当我将代码交给服务器时,它几乎立即出现故障。然后,当我在 Windows 7 上对其进行测试时,它运行良好。

以下是 Windows 8.1(带 IE 11)和 Windows 7(带 IE 9)上的行为:

>$ie = New-Object -ComObject InternetExplorer.Application
>$ie.Navigate('about:blank')
>$ie.visible = $true #Internet explorer is now displayed with a blank page
>$ie.document


Script                            : System.__ComObject
all                               : System.__ComObject
body                              : System.__ComObject
activeElement                     : System.__ComObject
images                            : System.__ComObject
applets                           : System.__ComObject
links                             : System.__ComObject
forms                             : System.__ComObject
anchors                           : System.__ComObject
title                             :
scripts                           : System.__ComObject
designMode                        : Inherit
selection                         : System.__ComObject
readyState                        : complete

名单持续了一段时间......

现在,当我在 Server 2008 R2 上运行相同的代码时:

>$ie = New-Object -ComObject InternetExplorer.Application
>$ie.Navigate('about:blank')
>$ie.visible = $true #Internet explorer is now displayed with a blank page
>$ie.document
System.__ComObject

这是一个小问题,因为脚本在很大程度上依赖于写入和读取 IE Document 对象,而且我需要的类都不可用。而是没有可用的课程,即使是我不需要的课程。

那么有什么方法可以访问 Server 2008 R2 上的文档对象呢?我已经通过安全区域设置完成了我能想到的所有事情(尽管我可能在那里遗漏了一些东西),并且我禁用了增强的安全配置和 IE 保护模式。我所做的一切似乎都无法让我访问该文档。有什么建议吗?

4

2 回答 2

0

如果在 PowerShell 中,可能允许您仍然拥有 HTML 但不使用的一件事是编写 HTA,并将所有必需的值从 .hta 导出到 .csv 文件,然后将这些值从 .csv 导入到您的Windows PowerShell 提示符。无论如何都不是最干净的解决方案,但它比 XAML / WPF 容易得多,并且可以在更多平台上使用。唯一的缺点可能是我不知道 Windows Server 是否支持 HTA。如果没有,一个简单的解决方法可能是在客户端计算机上运行参数导出部分,并在服务器上实际安装。

另一条路线可能是使用 PowerShell 脚本对服务器运行命令,同时在客户端计算机上运行前端。我知道 Invoke-Command 会让您在服务器上运行,但同时授予您使用 IE 的能力。

抱歉,我无法提供更多建议,但我之前从未尝试在 Windows Server 上执行此操作。

于 2014-09-20T03:18:57.970 回答
0

通过使用 gacutil.exe 将 Microsoft.mshtml.dll 程序集从 Windows 8.1 机器部署到 Server 2008 R2 机器上的 GAC 并重新启动 PowerShell 实例来解决。

于 2014-09-22T17:54:46.990 回答