![]() |
Как закрыть IE (Kerio NTLM)
Есть такой код
Скрытый текст
Код:
Dim oIE Взят отсюда https://manuals.gfi.com/en/kerio/con...ntrol-917.html По идее что он должен делать - открыть IE, зайти на сайт (таким образом клиент аутентифицируется на веб-статистике керио), подождать 30 секунд, закрыть IE. Проблема в том что oIE.quit не отрабатывает - IE не закрывается и у юзера бесконечно висит окно эксплорера которое закрывать либо вручную либо запускать батник который стартует vbs-скрипт а потом грохает IE. Но это не вариант потому что проблема "юзер видит мельтешащие и в общем-то не не нужные ему окна" всё еще не решается. Как-нибудь можно сделать этот процесс невидимым пользователю? |
Charg, у меня — закрылся.
Если вместо .Visible = False использовать .Visible = True — что-нибудь видно при этом симптоматичного, что может мешать завершению работы приложения? |
по большому не пробовали ?
Код:
# quit and dispose IE |
Iska, visible=false, по большому счету, тоже никакого эффекта не имеет, т.к. окно IE в любом случае отображается (хотя возможно я неправильно понимаю суть этого параметра).
В принципе на работе с коллегой заметили странный нюанс - если запускать этот скрипт даблкликом из x32 тотал коммандера - отрабатывает как надо, если просто из эксплорера (x64 уже, win10 ltxb) - не отрабатывает. Serguei Kouzmine, это PS? А как мне это в vbs скрипт впихнуть? Или наоборот - как впихнуть ту же последовательность действий (открыть браузер, перейти по ссылке, подождать, закрыть браузер) в PS? |
Цитата:
Цитата:
В принципе, на x64 ОС Вы можете принудительно использовать запуск этого WSH скрипта под потребной разрядности wscript.exe/cscript.exe из каталога %SystemRoot%\SysWOW64, ежели под ними всё отрабатывает как надо. |
В общем выяснил что дело в самой странице, которую получает IE.
так работает потому что страница google.com нормально грузится
Код:
Set IE = CreateObject("InternetExplorer.Application") а так не работает
Код:
Set IE = CreateObject("InternetExplorer.Application") И выдает ошибку Скрытый текст
![]() На строке IE.Quit. А не работает потому (наверное) что при попадании юзера на эту страницу его редиректит на https://kerio:4081/login/blocked.php т.к. у юзера нет прав смотреть собственную статистику, та в общем-то и не должно быть. Собственно, варианта решения два - настроить керио чтоб либо не редиректило либо дать права на статистику - или каким-то образом насильно грохать IE внутри скрипта. Из VBS скрипта это можно как-то сделать? upd. Оказалось что если открыть страницу https://kerio:4081/login/ в гуглохроме - пользователя нормально редиректит на страницу статистики керио (при условии наличия прав) Если открыть ту же самую страницу в эксплорере (тот же пользователь и права) - редиректит на https://kerio:4081/login/blocked.php |
Charg, тогда можно смело обращаться в техподдержку Kerio с этим:
Цитата:
|
Charg, Если хамским образом закрыть все экземпляры эксплорера, то после oIE.quit
Код:
Program = "iexplore.exe" |
@Charg у меня постепенно наполняется примерами github даже не репо а директория в другом репо - internetExplorer automation может пригодится когда *ставить вообще ничего нельзя* но это весьма трудоемкое скриптоделание очень уж он парши ^W нехороший инструмент - вот линк
https://github.com/sergueik/powershe...er_application |
megaloman, работает, закрывается. Остается только каким-то образом "спрятать" само окно эксплорера, которое появляется на секунду. oIE.Visible = False не отрабатывает.
Serguei Kouzmine, переписал на PS, получилось так: Скрытый текст
Код:
$ie = new-object -com 'internetexplorer.application' В итоге IE открывается, переходит куда надо (всё это не в "скрытом" режиме, как должно было бы быть, ведь есть $ie.visible = $false), а потом не закрывается. |
Charg, вообще окно IE по умолчанию не должно отображаться. Я не знаю, может быть в новых ОС это поведение как-то изменилось?! На другой машине не пробовали поиграться с этим кодом?
Ну, и вместо простого Sleep'а лучше пользовать примерно такую конструкцию: Код:
.Navigate "bla-bla-bla" |
@charg забудьте про ie и перейдите на Headless Chrome и здоровье сбережете
он работает с chome 70/ chromedriver 44 (на самом деле даже раньше на правильных OS ) https://developers.google.com/web/up...eadless-chrome - не идеально но с Вашей справится... не знаете как смотрете мойрепо https://github.com/sergueik/powershell_selenium кстати не забывайте пожалуйста: like it? star it! |
Serguei Kouzmine, а что, Google Chrome уже научился в Automation?
|
представьте
selenium https://www.joecolantonio.com/seleni...visual-studio/ - то же самое из повершелл https://github.com/sergueik/powershell_selenium или Chrome Devtools kit https://github.com/BaristaLabs/chrom...ools-generator - это поэкзотичнее и новое я личнно CDP дела л из праведной Java но на самом деле npm его всё. гуглите powershell selenium и 100500 ссылок VBS Selenim тоже существует но это нишевой продук экзотика |
Цитата:
Я конечно не исключаю что где-то чего-то может быть напортачено в образе, но сравнить поведение я могу разве что с серверными ОС. Есть 2019 и 2016 сервера - на обоих поведение то же самое (установлены с образов msdn). Цитата:
Код:
chrome.exe --headless --disable-gpu --remote-debugging-port=9222 https://kerio:4081/login |
Charg, спасибо, ясно. Сочувствую.
Serguei Kouzmine, видимо у нас с Вами достаточно разные представления о том, что такое Automation. |
|
@charg все одинаково работает на всех платформах включая headless . учтите что так ка повершелл не компилируется то приходится писать длинные имена типов как
Код:
$width = 1200; accelerators https://blogs.technet.microsoft.com/...-accelerators/ |
El Sanchez, выглядит как мой случай. Согласно в FAQ по NTLM аутентификации в Kerio Control действительно нужно добавлять FQDN запись этого самого Kerio Control в зону Intranet, что я и сделал. Ну и еще валидный сертификат должен быть, он тоже есть.
Буду пробовать, спасибо. Serguei Kouzmine, к сожалению, мои навыки программирования начинаются и заканчиваются на "перевел текст с английского на русский - примерно прикинул что делает этот код", а сам я с 0 не в состоянии ничего написать. В вашем коде не особо понимаю куда, собственно, засунуть ссылку по которой нужно перейти. Просто добавить как параметр внутрь $options.addArguments(@())? Цитата:
Я вот тут нагуглил такую штуку https://docs.microsoft.com/en-us/pre...365(v%3dvs.85). Но не понимаю как это применить. По идее нужно всунуть его где-то в цикл чтобы ожидать readystate = READYSTATE_COMPLETE пока redirectCount не будет равен 1? |
@Charg слона я не заметил сначала - если NTLM то все... проприетрными технологиями никто кроме их самих не дружит. код который вы показали раньше вроде правильный посмотрите (сохраните в переменную что COM отвечает) . может что понятное он отвечает.
вот я немного изменил ваш чтобыо ткрывать страницу которая *мне* доступна находить там что нибудь для примера и печатать - работавет и окно не открывается . windows 8.1 то есть edge еще не ту. ie 11. после работы если оштбка то в процессах ie висят и не один.. если ошибок нет то и в процессах ie нет но на экране не появляется никогда.. скрипт Код:
$ie = new-object -com 'internetexplorer.application' Код:
PS C:\developer\sergueik\powershell_internetexplorer_application> . .\data_collector_test5.ps1 |
В общем вопрос решился с помощью ссылки El Sanchez
Итоговый вариант выглядит так Скрытый текст
Код:
Set IE = GetObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}") |
Charg, только вместо простого Sleep'а лучше попробуйте пару вышеуказанных конструкций.
|
Время: 23:14. |
Время: 23:14.
© OSzone.net 2001-