IE自动化将mac地址发送到网站和输出组织

时间:2013-09-17 16:21:19

标签: internet-explorer powershell automation

我已经获得了一千个mac地址列表,以查找他们所属的公司。

我想从文件中读取每个mac地址,然后将组织输出到另一个文件中,而不是搜索http://standards.ieee.org/develop/regauth/oui/public.html

现在,这就是powershell脚本的样子:

 $mac = '00-00-00'  
 $ie = New-Object -ComObject InternetExplorer.Application
 $ie.Visible = $true
 $ie.navigate('http://standards.ieee.org/develop/regauth/oui/public.html')

 while($ie.Busy){sleep -mil 100}


 $ie.Document.getElementById("x").value=$mac
 $ie.Document.getElementById("submit").Click()

当我运行脚本时,它会启动网站http://standards.ieee.org/develop/regauth/oui/public.html,并在文本框中输出“00-00-00”,但它不会点击提交按钮“

以下是该网站的相关来源:

<input name="x" size="30" type="text" value="" /><input name="submit2" type="submit" value="Search!" />

1)如何使其“点击” 2)如何将输出写入某处(即控制台,文件等)

谢谢!

编辑:

我注意到以下错误输出到控制台:

您无法在空值表达式上调用方法。

At C:\sandbox\get-org.ps1:11 char:46
+      $ie.Document.getElementById("submit").Click <<<< ()
    + CategoryInfo          : InvalidOperation: (Click:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

1 个答案:

答案 0 :(得分:3)

在这种情况下,自动化Internet Explorer是过度的。 IEEE支持更友好的URL语法,您只需将OUI作为请求的一部分嵌入:

$mac = "00-01-02"
$wc = New-Object System.Net.WebClient
$html = $wc.DownloadString("http://standards.ieee.org/cgi-bin/ouisearch?$mac")

$html变量包含搜索结果页面的简短HTML。您可以根据需要进一步过滤或处理它。

请注意:他们可能会对服务进行一些限制或其他使用条款,因此您可能不希望像PowerShell一样快速向服务器发出请求。考虑在每次查询后添加Start-Sleep 1以将请求延迟一秒,以减轻您将突然在其服务上创建的负载。