Как получить доступ к классическому объекту автоматизации COM Internet Explorer для работающего экземпляра Internet Explorer из Powershell? - PullRequest
3 голосов
/ 30 марта 2009

Как получить доступ к классическому объекту автоматизации COM Internet Explorer для работающего экземпляра Internet Explorer? То есть, если у меня Internet Explorer открыт в нескольких окнах, как мне связать COM-объект, соответствующий одному из этих окон, с переменной в Powershell изнутри Powershell? Наиболее близким к этому я стал получение процессов «iexplore» и «ieuser» через get-process.

1 Ответ

8 голосов
/ 30 марта 2009

Обычно, чтобы получить доступ к интерфейсу COM на существующем объекте, вы используете таблицу запущенных объектов. К сожалению, Internet Explorer не регистрируется в таблице запущенных объектов - но, тем не менее, это дает нам некоторые полезные результаты поиска Google.

Например, поиск в Google «бегущей таблицы объектов» «Internet Explorer» нашел меня Как подключиться к работающему экземпляру Internet Explorer , который предоставляет (VBScript?) Пример, демонстрирующий использование объекта ShellWindows.

Быстрый и грязный (без проверки ошибок!) Перевод этого примера в сценарий PowerShell дает нам:

$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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...