带参数的Powershell com对象

时间:2013-08-19 15:47:17

标签: powershell parameters comobject

我想编写一个powershell脚本,它将Internet Explorer实例作为com对象打开,以便我可以操作它。问题是我需要使用参数运行它以确保IE作为新会话运行。

我需要传递的参数是-noframemerging我需要传递这个,所以每个实例都是一个新的会话。这是我用来启动实例的代码。

$ie = new-object -com "InternetExplorer.Application" 

如果有人能帮我弄清楚如何能够在IE中创建多个对象作为新会话,这将是非常棒的!

1 个答案:

答案 0 :(得分:2)

这是我的解决方案:

$IEProcess = [System.Diagnostics.Process]::Start("iexplore", "-noframemerging")
Sleep -Seconds 1
$ie = $(New-Object -ComObject "Shell.Application").Windows() | ? {$_.HWND -eq $IEProcess.MainWindowHandle}

我使用System.Diagnostic.Process库启动一个实例,我使用的是Start-Process但得到了一些奇怪的结果,这就解决了这个问题。在这一点上,我有一个IE实例打开了noframemerging开关和一个指向进程的变量。

我在那里睡了一觉,让com对象有机会在尝试引用之前构建。

然后我抓住所有windows com对象并选择一个句柄(HWND)与我刚刚开始的过程中的句柄相同,并将其分配给我的$ ie变量。

最终结果是我有一个引用Internet Explorer的com对象的变量,它独立于所有其他会话。我特别需要这个的原因是我打开IE的许多实例并登录到具有不同用户帐户的网站,如果他们共享会话,则跳过登录页面并且他们已经作为登录的第一个用户登录

感谢所有帮助人员!