2009-03-30 4 views
3

Wie greife ich auf das klassische COM-Automatisierungsobjekt von Internet Explorer für eine laufende Instanz von Internet Explorer zu? Das heißt, wenn ich Internet Explorer in mehreren Fenstern geöffnet habe, wie verknüpfe ich das COM-Objekt, das einem dieser Fenster entspricht, mit einer Variablen in Powershell, aus Powershell? Am nächsten komme ich dazu, die Prozesse "iexplore" und "ieuser" über get-process zu erhalten.Wie greife ich auf das klassische COM-Automatisierungsobjekt von Internet Explorer für eine laufende Instanz von Internet Explorer von Powershell zu?

Antwort

8

Um den Zugriff auf eine COM-Schnittstelle für ein vorhandenes Objekt zu erhalten, würden Sie normalerweise die running-Objekttabelle verwenden. Leider registriert sich der Internet Explorer nicht bei der Tabelle laufender Objekte - trotzdem liefert er uns einige nützliche Google-Suchergebnisse.

Zum Beispiel, Googeln "running Objekttabelle" "Internet Explorer" fand mich How to connect to a running instance of Internet Explorer, die ein (VBScript?) Beispiel bietet die Verwendung des ShellWindows-Objekts.

Eine schnelle ‚n schmutzig (! Keine Fehlerprüfung) Übersetzung dieser Probe zu Powershell-Skript gibt uns:

$shellapp = New-Object -ComObject "Shell.Application" 
$ShellWindows = $shellapp.Windows() 
for ($i = 0; $i -lt $ShellWindows.Count; $i++) 
{ 
    if ($ShellWindows.Item($i).FullName -like "*iexplore.exe") 
    { 
    $ie = $ShellWindows.Item($i) 
    break 
    } 
} 
$ie.navigate2("http://stackoverflow.com")