Ошибка открытия Internet Explorer из PowerShell

57
4

Я пишу сценарий PowerShell, который делает кучу экрана, соскабливающегося с веб-сайта интрасети. Я не имею доступа и не могу изменить исходный код веб-сайта.

Сценарий начинается с открытия Internet Explorer (IE11 требуется из-за политики компании), затем перемещается по нескольким страницам и выполняет действия, основанные на информации, очищенной от отдельных страниц. Кажется, все работает нормально.

На одной конкретной странице сценарий должен ввести информацию в 2 поля ввода, чтобы создать список гиперссылок, а затем выбрать одну из гиперссылок, используя click(). Гиперссылка - это href to void (0), а затем функция JavaScript в onclick.

<td align="left" class="wGNodeStyle">
<a href="javascript:void(0)" class="workgroupStyle" onclick="openWgMgmtWindow(2)">

Функция JavaScript открывает новое окно и отправляет некоторую пользовательскую информацию в это новое окно.

function openWgMgmtWindow(selIndex) {
document.getElementsByName("workgroupSo.groupId")[0].value = eval('document.all.wgGroupId'+selIndex+'.innerHTML');
document.getElementsByName("workgroupSo.primaryGroupId")[0].value = eval('document.all.wgGroupPrimary'+selIndex+'.innerHTML');
document.getElementsByName("actionString")[0].value = "Search";

var w = window.open("", document.forms['formManageWG'].target,winProps);
w.focus();
document.forms['formManageWG'].submit();
return false;
}

Здесь проблема:

Если я открою Internet Explorer вне PowerShell, либо щелкнув значок, либо даже выполнив исполняемый файл напрямую, перейдите к рассматриваемой странице и нажмите гиперссылку, откроется новое окно и отобразит ожидаемый экран. Даже если я открою Internet Explorer, как только что описано и исполню скрипт, опустив сценарий запуска IE, и просто найду объект IE, все будет работать нормально, и откроется новое окно, как указано выше.

# & "$env:programfiles\Internet Explorer\iexplore.exe" 'https://www.ehpas.com'
$objEhpas = New-Object -comObject Shell.Application
do {
Start-Sleep -Milliseconds 500
$ieEhpas = @($objEhpas.windows() | ? {$_.locationName -like '*EHPAS Home Page*' })[0]
} while ($ieEhpas -eq $null)

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

Вопрос в том, в чем заключается разница между открытием Internet Explorer напрямую и открытым программным способом? И как мне заставить программную версию вести себя так же, как прямо?

Прошу прощения за длинный пост.

спросил(а) 2015-12-08T20:57:00+03:00 4 года, 9 месяцев назад
1
Решение
69

Наконец-то я нашел ответ на свой вопрос. По-видимому, это ошибка в Internet Explorer 11, и она не будет исправлена.

https://connect.microsoft.com/IE/feedback/details/812072/ie-11-window-open-issue

Проблема существует для меня, потому что я запускаю PowerShell в режиме администратора. Запуск PowerShell как "самого себя" решает проблему открытия IE, но представляет некоторые другие проблемы. Тем не менее, я должен уметь вычеркнуть свой выход.

ответил(а) 2015-12-08T23:36:00+03:00 4 года, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема