如何使用PowerShell连接URL读取VMware ESXi版本与内部编号对应XML表格
PowerShell读取ESXi版本与内部版本号对应表脚本
前置要求
- PowerShell 5.1 或 Core 6.0+ 版本
- 运行环境可正常访问VMware官方公开的版本对应表页面
完整可运行脚本
# 替换为VMware官方ESXi版本对应表的公开访问地址 $officialTableUrl = "<VMware官方ESXi版本对应表URL>" # 适配TLS 1.2 访问要求,避免HTTPS请求失败 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # 发起页面请求,使用基础解析模式无需IE引擎支持 $webResponse = Invoke-WebRequest -Uri $officialTableUrl -UseBasicParsing # 匹配页面内的版本对应表格,可根据官方页面实际结构调整匹配关键词 $targetTable = $webResponse.ParsedHtml.getElementsByTagName('table') | Where-Object { $_.innerText -match '内部版本号|Build Number.*版本|Version' } | Select-Object -First 1 # 解析表格内容为结构化对象 $versionMapping = @() $tableRows = $targetTable.rows # 提取表头 $headers = $tableRows[0].cells | ForEach-Object { $_.innerText.Trim() } # 遍历行提取数据 for ($rowIndex = 1; $rowIndex -lt $tableRows.Count; $rowIndex++) { $currentRow = $tableRows[$rowIndex].cells $rowData = [PSCustomObject]@{} for ($colIndex = 0; $colIndex -lt $headers.Count; $colIndex++) { $rowData | Add-Member -NotePropertyName $headers[$colIndex] -NotePropertyValue $currentRow[$colIndex].innerText.Trim() } $versionMapping += $rowData } # 输出测试:查看所有ESXi 8.0的版本对应关系 $versionMapping | Where-Object { $_.'版本' -match 'ESXi 8.0' } | Format-Table -AutoSize # 导出全部数据到本地CSV文件 # $versionMapping | Export-Csv -Path "./ESXi版本对应表.csv" -NoTypeInformation -Encoding UTF8
使用说明
- 如遇HTTPS证书校验失败场景,可自行添加证书忽略代码段,非特殊场景不建议开启
- 官方页面结构调整时,需要同步修改表格匹配的关键词规则,确保可以正确定位到目标表格
- 可根据实际需求修改筛选条件,快速查询对应版本的内部版本号信息
内容的提问来源于stack exchange,提问作者Lipotech
相关产品推荐
相关产品推荐

