2014-08-27 423 views
1

我可以使用這個簡單的腳本(或根據Id的輕微變化)登錄到Facebook,或谷歌,或stackoverflow。但是,我的公司有一個網站,我無法登錄到使用PowerShell。通過powershell登錄到內部網站

$ie = New-Object -com InternetExplorer.Application 
$ie.visible=$true 

$ie.navigate("www.loginpage.com") 

start-sleep 1; 
# I was using this before, but it would never leave the loop... 
# while($ie.ReadyState -ne 4) {start-sleep -m 100} 

$ie.document.getElementById("username").value = "username" 
$ie.document.getElementById("password").value = "password" 
$ie.document.getElementById("loginform").submit() 

我認爲,唯一不同的是,該網站是我們的「內聯網」,不能上網,而出於某種原因PowerShell中的兩者之間的區別。但我不確定,我仍然可以正常打開IE瀏覽器並轉到網址並查看源代碼,並查看代碼ID和其他內容。

有沒有人知道爲什麼我在使用$ie.document.getElementById時遇到以下錯誤。

You cannot call a method on a null-valued expression. 
+ CategoryInfo   : InvalidOperation: (getElementById:String) [], RuntimeException 
+ FullyQualifiedErrorId : InvokeMethodOnNull 

我知道的標籤是:

<input name="username" id="username" langcode="EN" type="text"> 
<input name="password" id="password" type="password"> 

任何想法?

+0

可能的重複http://stackoverflow.com/questions/15243990/powershell-website-login-not-working?rq=1 – Matt 2014-08-27 18:27:55

+0

這意味着在$ ie中沒有當前文檔,也許該頁面尚未加載?我使用'開始 - 睡眠1}直到(!($ IE.Busy))'等待。 – TheMadTechnician 2014-08-27 18:28:06

+0

@TheMadTechnician它很快就打破了這個循環,之後我仍然得到了'null-value expression'錯誤。我在上面的代碼中註釋了以前的等待循環,而且似乎無限期地運行。 – 2014-08-27 18:32:49

回答