2

我正在尝试编写一个基本的 powershell 脚本来登录 gmail,但遇到了一些问题。代码如下。我已经注释掉了一些内容以缩小范围。

$url = "http://gmail.com" 
$username="myusername" 
$password= "123456" 
$ie = New-Object -com InternetExplorer.Application


$ie.visible = $true; 
$ie.navigate($url); 
while ($ie.Busy) 
{ 
Start-Sleep -m 10000; 
} 

$counter = 0
while (($counter -lt 10) -and ($ie.document -eq $null)) {Start-Sleep 1; $counter++}

$ie.document -eq $null
$ie.Document.getElementByID('email').value=$username
#$ie.Document.getElementByID("Password").value=$password 
#$ie.Document.getElementById("signin").Click();

当我运行 powershell 脚本时,出现以下错误。

You cannot call a method on a null-valued expression.
At J:\scripts\gmail.ps1:21 char:1
+ $ie.Document.getElementByID('email').value=$username
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

奇怪的是,这昨天工作得很好,今天根本不工作。我正在使用 IE9。

非常感谢任何帮助。

4

2 回答 2

4

PowerShell IE9 ComObject 在导航到网页后具有所有空属性,这给了我答案。由于 IE 保护模式阻止了对象的创建,因此不得不以管理员身份运行我的脚本。关闭 IE 保护模式或以管理员身份运行脚本以使其正常工作。

于 2013-03-06T11:07:45.233 回答
0

我认为你在这里犯了一个错误:

$ie.Document.getElementByID("Password").value=$password 

ID 应该是密码,而不是密码。因此,将该行替换为:

$ie.Document.getElementByID("Passwd").value=$password 

为我工作。

于 2013-03-06T10:13:04.707 回答