Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Как закрыть IE (Kerio NTLM)

Ответить
Настройки темы
VBS/WSH/JS - [решено] Как закрыть IE (Kerio NTLM)

Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Charg
Дата: 03-12-2018
Есть такой код
Скрытый текст
Код: Выделить весь код
Dim oIE

Set oIE = CreateObject("InternetExplorer.Application")

oIE.Visible = False

oIE.Fullscreen = False

oIE.Toolbar = True

oIE.Statusbar = True

oIE.Navigate("https://kerio.domain.ua:4081/login")

WScript.Sleep(30000)

oIE.quit


Взят отсюда https://manuals.gfi.com/en/kerio/con...ntrol-917.html

По идее что он должен делать - открыть IE, зайти на сайт (таким образом клиент аутентифицируется на веб-статистике керио), подождать 30 секунд, закрыть IE.

Проблема в том что oIE.quit не отрабатывает - IE не закрывается и у юзера бесконечно висит окно эксплорера которое закрывать либо вручную либо запускать батник который стартует vbs-скрипт а потом грохает IE. Но это не вариант потому что проблема "юзер видит мельтешащие и в общем-то не не нужные ему окна" всё еще не решается.
Как-нибудь можно сделать этот процесс невидимым пользователю?

Отправлено: 18:37, 27-11-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Charg, у меня — закрылся.

Если вместо .Visible = False использовать .Visible = True — что-нибудь видно при этом симптоматичного, что может мешать завершению работы приложения?

Отправлено: 21:44, 27-11-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 245
Благодарности: 49

Профиль | Отправить PM | Цитировать


по большому не пробовали ?

Код: Выделить весь код
# quit and dispose IE
$ie.Quit()
while( ([System.Runtime.Interopservices.Marshal]::ReleaseComObject($ie) | out-null) ) {}
Remove-Variable ie -ErrorAction SilentlyContinue

Отправлено: 23:23, 27-11-2018 | #3


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Iska, visible=false, по большому счету, тоже никакого эффекта не имеет, т.к. окно IE в любом случае отображается (хотя возможно я неправильно понимаю суть этого параметра).
В принципе на работе с коллегой заметили странный нюанс - если запускать этот скрипт даблкликом из x32 тотал коммандера - отрабатывает как надо, если просто из эксплорера (x64 уже, win10 ltxb) - не отрабатывает.

Serguei Kouzmine, это PS? А как мне это в vbs скрипт впихнуть? Или наоборот - как впихнуть ту же последовательность действий (открыть браузер, перейти по ссылке, подождать, закрыть браузер) в PS?

Отправлено: 01:01, 28-11-2018 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Charg:
Iska, visible=false, по большому счету, тоже никакого эффекта не имеет, т.к. окно IE в любом случае отображается »
Неа. Не отображается.

Цитата Charg:
В принципе на работе с коллегой заметили странный нюанс - если запускать этот скрипт даблкликом из x32 тотал коммандера - отрабатывает как надо, если просто из эксплорера (x64 уже, win10 ltxb) - не отрабатывает. »
Когда Вы используете запуск из-под x86-приложения — из-за редиректа файловой системы используется x86-версия wscript.exe/cscript.exe из SysWOW64. Из-за редиректа реестра и все объекты Automation также создаются на базе перенаправленных x86-разделов реестра и x86-версий библиотек.

В принципе, на x64 ОС Вы можете принудительно использовать запуск этого WSH скрипта под потребной разрядности wscript.exe/cscript.exe из каталога %SystemRoot%\SysWOW64, ежели под ними всё отрабатывает как надо.

Отправлено: 02:38, 28-11-2018 | #5


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


В общем выяснил что дело в самой странице, которую получает IE.
так работает потому что страница google.com нормально грузится
Код: Выделить весь код
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.ToolBar = 1
IE.StatusBar = 1
IE.Width = 50
IE.Height = 50
IE.Navigate("https://google.com")
WScript.Sleep(2000)
IE.Quit

а так не работает
Код: Выделить весь код
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.ToolBar = 1
IE.StatusBar = 1
IE.Width = 50
IE.Height = 50
IE.Navigate("https://kerio:4081/login")
WScript.Sleep(2000)
IE.Quit

И выдает ошибку
Скрытый текст

На строке IE.Quit. А не работает потому (наверное) что при попадании юзера на эту страницу его редиректит на https://kerio:4081/login/blocked.php т.к. у юзера нет прав смотреть собственную статистику, та в общем-то и не должно быть.
Собственно, варианта решения два - настроить керио чтоб либо не редиректило либо дать права на статистику - или каким-то образом насильно грохать IE внутри скрипта. Как отключить редирект на керио я, честно говоря, понятия не имею, а выдача пользователю прав на просмотр собственной статистики почему-то не помогает. Так что видимо придется пойти менее правильным путем - скриптом насильно грохать IE.
Из VBS скрипта это можно как-то сделать?

upd.
Оказалось что если открыть страницу https://kerio:4081/login/ в гуглохроме - пользователя нормально редиректит на страницу статистики керио (при условии наличия прав)
Если открыть ту же самую страницу в эксплорере (тот же пользователь и права) - редиректит на https://kerio:4081/login/blocked.php

Последний раз редактировалось Charg, 28-11-2018 в 13:34.


Отправлено: 09:29, 28-11-2018 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Charg, тогда можно смело обращаться в техподдержку Kerio с этим:
Цитата Charg:
Оказалось что если открыть страницу https://kerio:4081/login/ в гуглохроме - пользователя нормально редиректит на страницу статистики керио (при условии наличия прав)
Если открыть ту же самую страницу в эксплорере (тот же пользователь и права) - редиректит на https://kerio:4081/login/blocked.php »
вопросом.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:55, 28-11-2018 | #7


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Charg, Если хамским образом закрыть все экземпляры эксплорера, то после oIE.quit
Код: Выделить весь код
Program = "iexplore.exe"

Set WMI = GetObject("winMgmts:")
SQuery = "Select *From Win32_Process Where Name=" + """" + Program + """"

Set Processes = WMI.ExecQuery(SQuery)
For Each Process In Processes
    Process.Terminate
Next

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:08, 28-11-2018 | #8


Старожил


Сообщения: 245
Благодарности: 49

Профиль | Отправить PM | Цитировать


@Charg у меня постепенно наполняется примерами github даже не репо а директория в другом репо - internetExplorer automation может пригодится когда *ставить вообще ничего нельзя* но это весьма трудоемкое скриптоделание очень уж он парши ^W нехороший инструмент - вот линк
https://github.com/sergueik/powershe...er_application
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:45, 29-11-2018 | #9


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


megaloman, работает, закрывается. Остается только каким-то образом "спрятать" само окно эксплорера, которое появляется на секунду. oIE.Visible = False не отрабатывает.

Serguei Kouzmine, переписал на PS, получилось так:
Скрытый текст
Код: Выделить весь код
$ie = new-object -com 'internetexplorer.application'
$ie.visible = $false
$ie.ToolBar = 0
$ie.StatusBar = 0
$ie.Width = 1
$ie.Height = 1
$url = 'https://kerio:4081/login'
$ie.navigate2($url)
$ie.Quit()
while( ([System.Runtime.Interopservices.Marshal]::ReleaseComObject($ie) | out-null) ) {}
Remove-Variable ie -ErrorAction SilentlyContinue

В итоге IE открывается, переходит куда надо (всё это не в "скрытом" режиме, как должно было бы быть, ведь есть $ie.visible = $false), а потом не закрывается.

Последний раз редактировалось Charg, 29-11-2018 в 10:45.


Отправлено: 09:26, 29-11-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Как закрыть IE (Kerio NTLM)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Как закрыть зависшееприложение. ZoomerJuk Microsoft Windows 2000/XP 27 09-10-2013 10:30
Интернет - Стандартные шары в системе - как закрыть, как найти.. flower Microsoft Windows 7 4 21-03-2011 11:01
Доступ - как мне для студента закрыть доступ на другой локальный диск, закрыть доступ к реестр nisan Microsoft Windows 2000/XP 10 12-09-2009 21:14
как закрыть шары vovas Microsoft Windows 2000/XP 0 08-02-2006 17:04
Как закрыть папку ND Microsoft Windows 95/98/Me (архив) 7 11-02-2002 07:33




 
Переход