检索Dell当前的BIOS版本

时间:2018-08-17 08:30:58

标签: powershell http web-scraping

因此,我设法编写了一个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

非常感谢您,我期待与您的学习

1 个答案:

答案 0 :(得分:1)

试图做同样的事情,但是放弃了,相反,我找到了另一个解决方案,dell也有这个下载库,它们都是相同的格式,甚至更好的基于html,只要他们不会改变对我有用的结构。

property

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