2013-08-19 3 views
1

Internet Explorer 인스턴스를 com 개체로 열어서 조작 할 수있는 powershell 스크립트를 작성하고 싶습니다. 문제는 Internet Explorer가 새로운 세션으로 실행되도록 매개 변수로 실행해야한다는 것입니다.powershell com 매개 변수가있는 개체

전달해야하는 매개 변수는 -noframemerging입니다. 각 인스턴스가 새 세션이되도록 전달해야합니다. 다음은 인스턴스를 시작하기 위해 사용했던 코드입니다.

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

사람이 환상적 일 것 IE의 ​​새로운 세션으로 여러 개체를 만들 수 있도록하는 방법을 알아내는 나에게 손을 줄 수 있다면!

+0

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

답변

2

여기 내 솔루션입니다 : 나는 System.Diagnostic.Process 라이브러리 인스턴스를 시작

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

, 나는 이것이 바로이 확정 시작-프로세스를 사용하지만 일부 이상한 결과를 얻고 있었다. 이 시점에서 나는 noframemerging 스위치와 프로세스를 가리키는 변수로 열린 IE 인스턴스를 가지고있다.

com 개체를 참조하기 전에 구성 할 수있는 기회를주기 위해 잠을 자았습니다.

그런 다음 모든 Windows COM 개체를 가져 와서 방금 시작한 프로세스에서와 동일한 핸들 (HWND)을 선택하고 $ $ 변수에 할당합니다.

결과적으로 다른 모든 세션과 독립적 인 Internet Explorer의 com 개체를 참조하는 변수가 생깁니다. 필자가이 필요가있는 이유는 IE의 많은 인스턴스를 열고 다른 사용자 계정으로 웹 사이트에 로그인하고 있기 때문입니다. 세션을 공유하면 로그인 페이지를 건너 뛰고 로그인 한 첫 번째 사용자로 이미 로그인됩니다. .

모든 도움 주셔서 감사합니다!