这是我的解决方案:
$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 但得到了一些奇怪的结果,这解决了这个问题。此时,我打开了一个带有 noframemerging 开关和一个指向进程的变量的 IE 实例。
在尝试引用它之前,我在那里睡了一个给 com 对象一个构造的机会。
然后我抓取所有的 windows com 对象并选择一个与我刚启动的进程中的句柄 (HWND) 相同的句柄 (HWND) 并将其分配给我的 $ie 变量。
最终结果是我有一个引用 Internet Explorer 的 com 对象的变量,该对象独立于所有其他会话。我特别需要这个的原因是我打开了许多 IE 实例并使用不同的用户帐户登录到一个网站,如果他们共享一个会话,则会跳过登录页面并且他们已经作为第一个登录的用户登录.
感谢所有的帮助家伙!