$wc = New-Object System.Net.WebClient
$DownloadString = $wc.DownloadString("http://www.example.com")
$HTML = New-Object -ComObject "HTMLFile"
$HTML.IHTMLDocument2_write($DownloadString)服务器脚本运行在
Major Minor Build Revision
----- ----- ----- --------
5 1 14409 1005开发PC
Major Minor Build Revision
----- ----- ----- --------
5 1 15063 502我的Windows 10开发PC与上面的代码工作得很好。我想在我的服务器2008 R2 x64机器上运行这个程序。我把它升级为PowerShell v5。我得到以下信息:
方法调用失败,因为System.__ComObject不包含名为“IHTMLDocument2 2_write”的方法。
后来的话..。
Unable to find type [mshtml.HTMLDocumentClass].发布于 2018-02-19 05:06:04
我和我的朋友试图弄清这件事。我们一直在他的机器上得到这个错误,而在我的机器上使用相同的脚本(在这两个版本上都使用相同的Windows 10构建版本)。
Method invocation failed because [System.__ComObject] does not contain a method named 'IHTMLDocument2_write'.
At <script_path\script_name>:184 char:1
+ $HTML.IHTMLDocument2_write($content)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (IHTMLDocument2_write:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound我们发现,在他的计算机上,$html对象具有ie9属性,而在我的计算机上,它具有。他确认我的电脑安装了MS Office,但他没有安装。他在运行Server 2008的另一台计算机上尝试了这些代码,这些计算机安装了Office (甚至是像2010这样的旧版本),而且我们的脚本运行得很好。
建议的解决方案:
$HTML = New-Object -Com "HTMLFile"
try {
# This works in PowerShell with Office installed
$html.IHTMLDocument2_write($content)
}
catch {
# This works when Office is not installed
$src = [System.Text.Encoding]::Unicode.GetBytes($content)
$html.write($src)
}发布于 2017-09-19 20:39:25
更新:
讽刺的是,几年后我遇到了一个类似的问题,遇到了这篇文章,说“嘿,我问了这个问题”。
我的答案现在是正确的了。
原版:
有帮助的问题:Can't use InternetExplorer.Application object?
将Microsoft.mshtml.dll从我的机器复制到C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies中的服务器。然后在脚本的开头添加了Add-Type -Path "C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\microsoft.mshtml.dll"。
我还注意到出现了一些IE安全盒(在运行我的脚本时),而且Windows服务器的IE安全设置可能会发生干扰(因为它比客户机高得多)。也许,如果我的设置被降低,这将在不复制.dll的情况下得到解决。然而,我认为升级到PSv5是至关重要的(因为即使是enum也没有被识别)。
发布于 2019-03-15 12:52:06
我不知道为什么,但是在电脑上安装了微软办公室之后,一切都很好。在两台不同的电脑上试过。
https://stackoverflow.com/questions/46307976
复制相似问题