2016-11-16 59 views
0

Iveは、顧客のWebサイトにログインするためのスクリプトを作成しました。すべてうまく動作しますが、私が使用しているアカウントからセッションが古くなっていることが報告されています。私は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; 

:ここで私が書いたコードです。

私はこのスクリプトをsessionvariableの有無にかかわらず実行しました。私の最初は、セッションがセッションを開いたままにしていたということでしたが、再度ログインしようとすると再利用されました。また、これは監視ソリューションの一部なので、120秒ごとにログインを試みるように設定されています。

+2

「古いセッション」はどのように定義されていますか?セッションを終了するためにログアウトするか、そうでなければ行動を取ることを期待していますか? HTTPがステートレスであるため、コンテキスト内の「セッション」とは何ですか?彼らは、「古いセッション」を残さないための手段として何を提案していますか? – alroc

+0

彼らは、私が使用していたアカウントに36のアクティブなセッションがあることを強調するスクリーンショットを送ってくれました。私はこれらを使って何もしていないし、スクリプトが完了したら直ちにセッションが終了したと思った。だから私は質問に答えると思う、アカウントはウェブサイトに多数回ログインしていた。 – Resin

+1

WebRequestを呼び出してログアウトするメソッドを呼び出す必要があるようです。そのウェブサイトを運営している人なら、あなたが何をする必要があるかを教えておく必要があります。 – alroc

答えて

0

セッションがWebサーバ上の何かによって維持されているため、Webサーバがセッションを終了できるようにするには、スクリプトで「ログアウト」アクションを実行する必要があります。そのWebサイトのメンテナーは、そのログアウトアクションを実行する要求を呼び出すことができ、そのサーバー上のリソースをクリーンアップすることができるURLを持つ必要があります。

関連する問題