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?
3
A
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")