因此,我设法编写了一个Powershell脚本,该脚本输出了我域中所有计算机及其BIOS版本的列表。现在,下一个任务是获取各个笔记本电脑的当前BIOS版本。 “当前”是指Dell支持并建议更新的版本。
问题是我还没有找到任何API(也许是TechDirect?),唯一可以看到当前BIOS版本的地方就是他们的支持网页。我尝试使用Invoke-WebRequest进行网页抓取
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$web = Invoke-WebRequest -Uri "https://www.dell.com/support/home/de/de/debsdt1/product-support/servicetag/2mx4wz1/drivers"
第一次尝试使用它就可以了,但是现在我总是返回
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
At C:\Users\l.engleder\Documents\Scraper.ps1:3 char:8
+ $web = Invoke-WebRequest -Uri "https://www.dell.com/support/home/de/d ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
非常感谢您,我期待与您的学习
答案 0 :(得分:1)
试图做同样的事情,但是放弃了,相反,我找到了另一个解决方案,dell也有这个下载库,它们都是相同的格式,甚至更好的基于html,只要他们不会改变对我有用的结构。
PS>$a = Invoke-WebRequest http://downloads.dell.com/published/pages/optiplex-3030-aio.html
PS>($a.ParsedHtml.body.getElementsByTagName('div') | Where {$_.getAttributeNode('id').Value -eq 'Drivers-Category.BI-Type.BIOS'}).outerhtml.split('<')[26].Replace("TD","").replace(">","").trim()
PS>A14
它并不漂亮整洁,但是可以在我测试过的所有模型上使用。只要您使用该主页上的链接,它就可能适用于该主页上的所有模型/链接。
-R