我已经获得了一千个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
答案 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
以将请求延迟一秒,以减轻您将突然在其服务上创建的负载。