Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Помощь со скриптом автологина (http://forum.oszone.net/showthread.php?t=245682)

Ugend 28-10-2012 22:14 2013969

Помощь со скриптом автологина
 
Вложений: 2
Всем привет!

Есть один скрипт на vbs, другой на powershell. Выполняют одну и ту же операцию.
Скрипты были найдены в интернете и немного подправлены под себя.
Суть скриптов заключается в том чтобы войти по адресу ввести логин/пароль и нажать логин.
Данный скрипт должен отрабатываться при входе пользователя в компьютер путем выполнения политики (GPO) "Сценарий входа".
Все работает отлично за одним исключением, скрипт полностью (на 100%) отрабатывается только, если вход осуществляется встроенной в домен учеткой Администратора или если просто зайти в компьютер локальным админом и выполнить скрипт вручную.
Если вход осуществляется обычным пользователем входящим только в группу "Пользователи домена", то скрипт открывает лишь заданный url и на этом все заканчивается. Если пользователя наделить аналогичными правами, что и у встроенного в домен админа, то скрипт отрабатывается, но не полностью, открывается url, происходит вход, но не запускается надстройка, необходимая для работы с сайтом. В любом случае меня данный расклад не устраивает, т.к. я не хочу наделять пользователей правами.

Прошу помочь в решении проблемы, либо может поможете в написании нового скрипта, который бы работал корректно. В написании скриптов я не силен.
Ошибки скриптов во вложении.

Коды скриптов:
VBS
читать дальше »
Код:

Option Explicit

Const READYSTATE_COMPLETE = 4

Dim objIE
Dim objForm

Set objIE = WScript.CreateObject("InternetExplorer.Application")

With objIE
    '.Visible = False
    .Visible = True
   
    .Navigate "https://idp.folio.fabasoft.com/idp/Authn/UserPassword"
   
    ' Ждём…
    Do
        WScript.Sleep 100
    Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
   
    ' Заполняем форму #0
    Set objForm = .Document.forms(0)
   
    With objForm
        .elements("j_username").value = "login"
        .elements("j_password").value = "password"
       
        ' Отправляем форму на сервер
        .submit()
    End With
   
    ' Ждём…
    Do
        WScript.Sleep 100
    Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
   
    'Тут прочие действия, для чего, собственно и затевались…
End With

Set objIE = Nothing

WScript.Quit 0



PowerShell
читать дальше »
Код:

$url = "https://idp.folio.fabasoft.com/idp/Authn/UserPassword"
$username="login"
$password="password"
$ie = New-Object -com internetexplorer.application;
$ie.visible = $true;
$ie.navigate($url);
$doc = $ie.document

$sw = @'
[DllImport("user32.dll")]
public static extern int ShowWindow(int hwnd, int nCmdShow);
'@

$type = Add-Type -Name ShowWindow2 -MemberDefinition $sw -Language CSharpVersion3 -Namespace Utils -PassThru
$type::ShowWindow($ie.hwnd, 3) # 3 = maximize

while ($ie.Busy -eq $true)
{
    Start-Sleep -Milliseconds 1000;
}

$doc.getElementById("j_username").value = $username
$doc.Document.getElementByID("j_password").value = $password
$doc.Document.getElementById("submitpass").Click();



PS Использовать IE не обязательно, можно и Ghrome.
PPS Бился с проблемой дней пять, но безуспешно. Поэтому решил обратится за помощью.

Kazun 28-10-2012 23:08 2014013

Попробуйте запустить скрипт PowerShell в режиме STA:

powershell -sta -file "C:\script.ps1"

Ugend 29-10-2012 01:56 2014091

Попробовал, все по прежнему.

PS Добавил в коллекцию 3-й скрипт на vbs, так-же не работает. ((
PPS Я мягко сказать не силен в написании скриптов, да и вообще с языками на Вы, но мне кажется, что скрипта не отрабатывает из-за COM и DOM элементов/объектов, не знаю, как выразиться.
PPPS А можно ли обойтись без InternetExplorer.Application, а просто запускать браузер по его расположению и не обязательно IE?
PPPPS Можно ли этим параметром Set objIGH = WScript.CreateObject(blablabla )запустить Google Chrome?
Что-то на подобие этого:
Код:

Set wsh = WScript.CreateObject("WScript.Shell")

wsh.Run"""C:\Program Files\Internet Explorer\iexplore.exe""" & "https://idp.folio.fabasoft.com/idp/Authn/UserPassword", 1, True

Решил отработать вот этот скрипт на mail.ru, все работает. (запускал скрипт локально на компе из под обычного юзера)
Пробовал этот же скрипт на fabasoft'е и на yandex'е, не получилось.
Код:

DIM IE
DIM ipf

Set IE = CreateObject("InternetExplorer.Application")
IE.navigate "http://mail.ru"
IE.Visible = True

While IE.Busy
    WScript.Sleep 50
Wend

Set ipf = IE.document.all.mailbox__login
ipf.Value = "username" 'fill in the text box
Set ipf = IE.document.all.mailbox__password
ipf.Value = "password" 'fill in the text box
Set ipf = IE.document.all.mailbox__auth__button
ipf.Click    'click the submit button
'IE.Quit


Ugend 29-10-2012 18:03 2014440

Разжился скриптом на Autoit. Скомпилировал скрипт в exe'шник, подсунул в сценарий, входа.
Результат прежний.
Что такого может работать у встроенного Админа, чего не работает у простого юзера даже наделенного аналогичными правами админа?
Я в замешательстве.

PS Наверно дело в самом сайте.

Я Мега-Супер-Злой!!!!!!!
Все дело было в "Контроле учетных записей" UAC
Ее надо полностью выключить!
Нет слов.

sov44 01-09-2015 13:49 2548249

Поскольку тема http://forum.oszone.net/thread-267462.html закрыта, задам вопрос здесь.
Имеется портабельная версия браузера Iron (Iron_Portable.exe) и собственно ярлык на рабочем столе. Нужно сделать автологин на сайт http://www.pgz.ako.kirov.ru/website/Menu/Page/170
Попробовал сделать по аналогии, не получилось. Как понял, не создался объект Iron_Portable
Скрытый текст
Код:

Option Explicit

Const READYSTATE_COMPLETE = 4

Dim objIE
Dim objForm

Set objIE = WScript.CreateObject("Iron_Portable.Application")

With objIE
    '.Visible = False
    .Visible = True
   
    .Navigate "http://www.pgz.ako.kirov.ru/website/Menu/Page/170"
   
    ' Ждём…
    Do
        WScript.Sleep 100
    Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
   
    ' Заполняем форму #0
    Set objForm = .Document.forms(0)
   
    With objForm
        .elements("uls_name").value = "MyLogin"
        .elements("uls_pswd").value = "MyPassword"
       
        ' Отправляем форму на сервер
        .submit()
    End With
   
    ' Ждём…
    Do
        WScript.Sleep 100
    Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
   
    'Тут прочие действия, для чего, собственно и затевались…
End With

Set objIE = Nothing

WScript.Quit 0


п.с. Win7x64

corbis 01-09-2015 14:04 2548251

А вы уверены, что существует COM-объект у этой программы? Если существует его надо зарегистрировать в системе:

Код:

C:\>regsvr32.exe /path/to/component/someComObj.dll
Ну. а если нет, то ..

Ugend, отключать UAC не лучший вариант, мне так кажется. Может есть смысл установить разрешения для нужных пользователей для данного COM-объекта?

sov44 01-09-2015 15:04 2548288

Цитата:

Цитата corbis
А вы уверены, что существует COM-объект у этой программы? »

А кто его знает? :)
Список файлов и каталогов http://rghost.ru/private/6GGCHwgBp/b...a713a59236bb7a

corbis 01-09-2015 16:11 2548307

Ничего по COM для этого браузера не нашел (хотя не очень долго искал), но его недавно походу сделали и, скорее всего, такой функциональности нет.
Наверно, есть смысл искать другие варианты реализации задуманного.

Iska 01-09-2015 22:06 2548460

Цитата:

Цитата sov44
А кто его знает? »

Разработчик. Но единственный известный мне браузер с Automation — IE. Если Вы пытались, действуя по аналогии, превратить «InternetExplorer.Application» в некий «Iron_Portable.Application» — то это ошибка.

sov44 01-09-2015 22:20 2548467

Цитата:

Цитата Iska
единственный известный мне браузер с Automation — IE »

К сожалению с него не могу залогится даже вручную на вышеуказанном сайте. Значит продолжаю ручками в Iron.

corbis 01-09-2015 23:06 2548479

А почему с IE не работает? Должно бы работать.

sov44 01-09-2015 23:24 2548480

Цитата:

Цитата corbis
А почему с IE не работает? Должно бы работать. »

Он настроен на работу с другими сайтами и настройки безопасности под них не дают залогится.

corbis 02-09-2015 12:03 2548616

поковыряйте настройки IE. Обязательно должно работать. Обычно создатели сайта инструкцию присылают какие настройки сделать, чтобы работало.

sov44 10-09-2015 11:32 2551668

Цитата:

Цитата corbis
поковыряйте настройки IE. Обязательно должно работать. »

Работает. Не смог понять, как определить значения "j_username", j_password страницы http://www.pgz.ako.kirov.ru/website/Menu/Page/170

Kazun 10-09-2015 12:59 2551695

to sov44:

Код:

# Получаем Frame, который содержит форму для пароля и логина                       
$frame = $ie.Document.Frames.Item(0).Document.Body
# Получаем элемент Login
$login = $frame.document.getElementById("frmLogin")
# Заполняем поле Пользователь
$login.Value = 12345678
# Получаем элемент Password
$pass = $frame.document.getElementById("frmPassword")
# Заполняем поле Пароль
$pass.Value = 12345678
# Нажать кнопку Вход
$frame.document.activeElement.Click()


sov44 10-09-2015 13:28 2551708

Основная задача - создать ярлык на рабочем столе для входа по логину и паролю на сайт.
Kazun, c PowerShell не работал, этот код нужно обернуть в скрипт (zk.ps1) и добавить как аргумент запуска странички в свойствах ярлыка ie?
Хотел добавить код в скрипт PowerShell шапки, но не понял, что куда. Сорри за ламерство с PowerShell.
Хотелось бы видеть код и на vbs


Время: 11:32.

Время: 11:32.
© OSzone.net 2001-