2016-11-16 63 views
0

我编写了一个脚本来登录到客户网站。一切正常,但他们报告说,他们看到我使用的帐户陈旧的会话。我无法解决这个问题,因为我的googlefu没有任何返回。这是我写的代码:Invoke-WebRequest离开会话打开

$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; 

伊夫在这个一直盯着太久,只是需要另一套眼睛轻推我在正确的方向。

如果它确实很重要,我已经运行了这个脚本,并且没有会话变量。但我最初的看法是会话导致会话保持打开状态,并在重新尝试登录时重用。此外,这是监控解决方案的一部分,因此它设置为每120秒尝试登录一次。

+2

他们如何定义“过时的会话”?他们是否期望您注销或以其他方式采取措施终止会话?在他们的上下文中什么是“会话”(因为HTTP是无状态的)?他们提出什么建议作为不让“陈旧会议”落后的手段? – alroc

+0

他们给我发了一张截图,突出显示我正在使用的帐户有36个活动会话。我没有对这些做任何事情,只要脚本完成会议结束,我就会假设。所以我想回答这个问题,这个帐号被登录了很多次。 – Resin

+1

然后,它听起来像你需要调用WebRequest来调用一个方法,注销你。运行该网站的人需要告诉你在那里需要做什么。 – alroc

回答

0

由于会话由Web服务器上的某些内容维护,因此脚本需要执行“注销”操作以允许Web服务器关闭会话。该网站的维护者应该拥有一个URL,您可以调用请求来执行该注销操作并清理其服务器上的所有资源。