Ugend
28-10-2012, 22:14
Всем привет!
Есть один скрипт на 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 Бился с проблемой дней пять, но безуспешно. Поэтому решил обратится за помощью.
Есть один скрипт на 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 Бился с проблемой дней пять, но безуспешно. Поэтому решил обратится за помощью.