2016-11-16 7 views
0

Ive написал сценарий для входа на сайт клиентов. Все работает отлично, но они сообщили, что они видят устаревшие сеансы из учетной записи, которую я использую. Я не понимаю, как это исправить, поскольку мой googlefu ничего не возвращает. Вот код, который я написал:Invoke-WebRequest Оставшиеся сессии Open

$c = Get-Credential -credential ${CREDENTIAL} 

$loginbase = 'http://${IP}' 
$loginURL = $loginbase + '/AdminTools/querybuilder/' 
$r = Invoke-WebRequest -Uri ($loginURL + 'logonform.jsp') -SessionVariable session 

$form = $r.Forms[0]; 

$form.Fields['aps'] = '${Node.DNS}:6400'; 
$form.Fields['usr'] = $c.Username; 
$form.Fields['pwd'] = SecureStringToString $c.Password; 

$r = Invoke-WebRequest -Uri ($loginURL + $form.Action) -Method POST -Body $form.Fields -WebSession $session; 

Ive смотрел на это слишком долго и просто нужен еще один набор глаза, чтобы подтолкнуть меня в правильном направлении.

В случае, если это имеет значение, я запустил этот скрипт с сессией и без нее. Моя первоначальная идея заключалась в том, что сеанс заставлял сеанс оставаться открытым и повторно использовался при попытке войти в систему снова. Кроме того, это часть решения для мониторинга, поэтому он пытается входить в систему каждые 120 секунд.

+2

Как они определяют «устаревшую сессию»? Ожидают ли они, что вы выходите из системы или каким-либо иным образом предпринимаете действия для прекращения сеанса? Что такое «сеанс» в их контексте (поскольку HTTP является апатридом)? Что они предложили в качестве средства для того, чтобы не оставить «устаревшую сессию» позади? – alroc

+0

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

+1

Тогда, похоже, вам нужно вызвать WebRequest для вызова метода, который выйдет из системы. Тот, кто работает на этом веб-сайте, должен сказать вам, что вам нужно делать. – alroc

ответ

0

Поскольку сеанс поддерживается чем-то на веб-сервере, ваш сценарий должен принять действие «выйти из системы», чтобы веб-сервер мог закрыть сеанс. Составитель этого веб-сайта должен иметь URL-адрес, с помощью которого вы можете вызвать запрос, для которого будет выполняться это действие, и очистить все ресурсы на своем сервере.