Powershell登录代码第一次工作,但不是第二次

时间:2014-05-12 04:28:29

标签: powershell

我运行了这段代码,它允许我登录网站并将所有内容下载到一个文本文件中,但在第一次尝试之后它就给了我一个错误:" Property' value&#39 ;无法在此对象上找到它确保它存在且可设置。"自从我运行它已经过了大约一个小时,它运行起来并且我没有改变代码。我清除了Internet Explorer中的cookie并删除了appdata cookies文件夹中的所有内容(唯一的原因我可能认为这样做是因为我已经登录到该页面)。

编辑:我刚刚编辑了脚本,因此它没有尝试首先登录,只是抓住页面,出于某种原因,它自动登录我的脚本,因为它返回的信息是只有在您登录后才能查看。可能导致这种情况的原因以及如何在每次登录时将其设置为何处?

$username = "user" 
$password = "pass" 
$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$false
$ie.navigate("website") 
while($ie.ReadyState -ne 4) {start-sleep -m 100} 
$ie.document.getElementById("username").value = "$username" 
$ie.document.getElementById("password").value = "$password" 
$ie.document.getElementById("click").click()
start-sleep 20 
$ie.Document.body | Out-File -FilePath c:\web.txt 

以下是我尝试登录的页面中的表单html:

form method="POST" action="login.php" name="loginform">
<div class="login" align="center"><p class="indent">Sign-in to your account</p></div>
  <div class="loginbot">
  <div class="email">Email Address: <br />
   <input name="username" type="text" value="" size="25" />
    <br />
    <input type="checkbox" name="remember" value="checkbox" class="small_chk1" value="ON"/>Automatically sign-in<br /></div>
  <div class="pass">Password:<br />
    <input name="password" type="password" size="25" /><br />
    <a href="login.php?ti=password">Forgot your password?</a><br /></p></div></div>
<div class="logbut"><input type="hidden" name="ti" value="do_login">
<input type="submit" value="Login ->" name="click" style="border-style: outset; border-width: 1; font-family:Verdana; color:#FFFFFF; font-size:10pt; background-image:url('images/clickbg.gif')"></div><br />
<br /></form>

1 个答案:

答案 0 :(得分:0)

我确信凭据只是存储在某个会话/ cookie中。

每个进程都会保留Cookie,因此它将是每个对象。

您可以点击页面上的退出按钮吗?如果有注销,请在下载内容后让Powershell按下它,它应该清除你的会话,让你下次再登录。

您还可以尝试使用以下方法强制清除流程中的Cookie:

InternetSetOption(IntPtr.Zero, INTERNET_OPTION_END_BROWSER_SESSION, IntPtr.Zero, 0);

请参阅http://support.microsoft.com/kb/195192/en

上的文档

您还可以通过调用以清除IE中的所有内容:

rundll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351