我正在编写一个脚本,应该从Internet Explorer中的链接安装一些软件,不幸的是该网站需要32位Internet Explorer才能工作。有没有办法迫使32位Internet Explorer窗口在64位机器上打开?从32位机器运行时,脚本运行正常。
$ie = New-Object -ComObject InternetExplorer.Application
$ie.Navigate2($url)
$ie.Visible = $true
答案 0 :(得分:4)
$url = "http://www.google.com"
$shell = New-Object -ComObject WScript.Shell
$shell.Exec("C:\Program Files (x86)\Internet Explorer\iexplore.exe $url") | Out-Null
答案 1 :(得分:1)
一种解决方案是使用powershell.exe
文件夹(C:\ windows \ syswow64 \ WindowsPowerShell \ v1.0 \ powershell.exe)下的完整路径显式启动SysWOW64
32位版本并运行脚本
答案 2 :(得分:1)
应该注意的是,MSIE的位级别很大程度上取决于版本。 IE9具有独立的32/64位版本,可以独立执行,但IE10 +完全是64位核心(在64位系统上),子进程可以基于逻辑树运行32或64位页面(参见下面的链接)。增强保护模式(EPM)可以强制不受信任的站点以完全64位模式运行(有关详细信息,请参阅下面的文章)。这导致许多Add-Ons与EPM不兼容,例如Adobe Reader的浏览器内浏览器,直到v11.0.7没有64位功能组件(EPM强制执行64位)。
我不知道如何实现您的目标,但上述信息可以帮助您避免陷阱。
答案 3 :(得分:-1)
我不知道PowerShell的答案,但在C中你会将CLSCTX_ACTIVATE_32_BIT_SERVER
传递给CoCreateInstance
。也许您知道如何将其转换为PowerShell-land?
注意:在我执行此操作的代码中,有一条评论:“32位XP上存在此标志会导致调用失败”(随后针对Microsoft的API开发人员的暴力威胁,我不会在这里发布)。代码继续仅在64位Windows上运行时添加标志。
答案 4 :(得分:-1)
解决您问题的最简单方法是以32位启动Powershell。
启动
Windows Powershellx86
路径
C:\Windows\syswow64\Windowspowershell\v1.0\powershell.exe