2013-08-19 37 views
1

我想編寫一個powershell腳本,它將打開一個Internet Explorer實例作爲com對象,以便我可以操作它。問題是我需要使用參數運行它,以確保IE作爲新會話運行。帶參數的Powershell com對象

我需要傳遞的參數是-noframemerging我需要通過這個,所以每個實例都是一個新的會話。這裏是我一直使用的代碼來啓動實例。

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

如果有人可以幫我弄清楚如何能夠在IE中創建多個對象作爲新會話,那太棒了!

+0

http://citator5.rssing.com/browser.php?indx=4016525&item=184 –

回答

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庫,我是用開始處理,但得到一些奇怪的結果,這種固定的權利了。在這一點上,我有一個IE的實例打開與noframemerging開關和一個變量指向進程。

我在那裏扔了一個睡眠,讓com對象有機會在嘗試引用它之前進行構造。

然後我抓住所有窗口的com對象,並選擇一個句柄(HWND)與我剛剛啓動的過程相同,並將其分配給我的$ ie變量。

最終的結果是我有一個變量,引用獨立於所有其他會話的Internet Explorer的com對象。我特別需要的原因是我打開了許多IE實例並登錄到具有不同用戶帳戶的網站,如果他們共享一個會話,登錄頁面將被跳過,並且他們已經以登錄的第一個用戶的身份登錄。

感謝所有的幫助!