如何从生成的对象Invoke-WebRequest命令

时间:2019-05-03 03:36:50

标签: powershell invoke-webrequest

我正在尝试从vmware硬件兼容性列表中自动收集数据,重点是VSAN产品。 他们有一个可搜索的页面,一旦您提出请求,您就会获得结果列表。它们还具有一个按钮,允许将结果“导出到csv”。 我要使用的URL是这个:

https://www.vmware.com/resources/compatibility/search.php?deviceCategory=hdd&vsan_type=vsanhdd&page=1&display_interval=500&details=1

我正在尝试使用Powershell代码“单击”“导出为CSV”按钮。

我可以找到要单击的元素,并且看到它有一个名为。“ click()”的方法,但是在调用时它什么也没做。

$url = "https://www.vmware.com/resources/compatibility/search.php?deviceCategory=hdd&vsan_type=vsanhdd&page=1&display_interval=500&details=1"

$webrequest = Invoke-WebRequest -Uri $url

$a = $webrequest.ParsedHtml.getElementById("export_csv")
$a.Cick()

使用我注意到的Chrome开发工具,一旦单击export_csv按钮,就会向另一个URL发出发布请求,该URL实际上会生成文件。发布请求包含进入CSV的实际数据,我相信它已经在页面上的某个位置生成了,但是我似乎无法从$ webrequest变量中提取该表格。

我还看到函数主体上还附加了一个导出表单,我很确定这是POST数据的来源(似乎有一个javascript函数正在执行此操作)。但是,我似乎无法以编程方式到达在手动检查页面时可以在Chrome Developer Tools中看到的“表单”元素。

如果我可以提取POST数据,或者直接调用导出到CSV函数并获取其输出的文件,我会很高兴。

关于如何实现这两个方面的任何想法? 谢谢

1 个答案:

答案 0 :(得分:0)

虽然我没有设法找到一种方法来执行此操作,但这只是达到目的的一种方法,可以提取数据 最终,我发现vmware有一些.js页面,可用于实际编译该列表。在这些.js页面中,有整个vmware VCG数据集,例如IO设备,服务器,vsan就绪节点等。

因此,如果其他人觉得这很有用,则下面是指向各种数据集的链接。这里的数据似乎被组织成javascript变量,可以像我一样直接使用,也可以解析为Powershell对象。

https://www.vmware.com/resources/compatibility/js/data_cpu.js
https://www.vmware.com/resources/compatibility/js/data_server.js
https://www.vmware.com/resources/compatibility/js/data_io.js