好的,所以我编写了一个非常强大的PowerShell脚本来安装和配置SharePoint 2007和SQL 2008.就是这样,请不要评判我。完成所有这些后,由于脚本应该是用户友好的,我开发了一个Web表单来收集输入和显示任务进度。愚蠢的是,我在Windows 8.1上编写了Web表单的所有代码,甚至没有测试将在其上执行脚本的Server 2008 R2上的基本功能。当我将代码交给服务器时,它立即出现故障。当我在Windows 7上测试它时,它工作正常。
以下是Windows 8.1(w / IE 11)和Windows 7(w / 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保护模式。我所做的一切似乎都无法让我访问该文档。有什么建议吗?
答案 0 :(得分:0)
有一件事可能允许你仍然拥有HTML但是如果在PowerShell中编写HTA,并将.hta中的所有必需值导出到.csv文件,然后从中导入这些值。 csv到Windows PowerShell提示符。无论如何不是最干净的解决方案,但它比XAML / WPF容易得多,并且可以在更多平台上使用。唯一的缺点可能是我不知道Windows Server是否支持HTA。如果没有,一个简单的解决方法可能是在客户端计算机上运行参数导出部分,并在服务器上进行实际安装。
另一条路径可能是使用PowerShell脚本在客户端计算机上运行前端时对服务器运行命令。我知道Invoke-Command会让你对服务器运行,但同时授予你使用IE的能力。
抱歉,我无法提供更多建议,但我之前从未尝试在Windows Server上执行此操作。
答案 1 :(得分:0)
通过使用gacutil.exe将Microsoft.mshtml.dll程序集从Windows 8.1计算机部署到Server 2008 R2计算机上的GAC并重新启动PowerShell实例来解决此问题。