Compare-Object无法正确比较HTML表数组和标准数组

时间:2019-06-27 23:07:31

标签: html arrays powershell html-table

我正在使用此代码将HTML表提取到数组中,并将该列表与从导入的CSV文件构建的数组进行比较。当我运行Compare-Object cmdlet时,从HTML页面提取的数组无法正确比较。

输出示例如下:

@{ProductName=Microsoft.Advertising.Xaml 10.1808.3.0 x64}     =>
@{ProductName=Microsoft.AsyncTextService 10.0.17134.1}        =>
@{ProductName=Microsoft.BingWeather 4.26.12153.0 x64}         =>
vs_filehandler_x86 English                                    <=
vs_FileTracker_Singleton 15.9.28128 English                   <=
vs_minshellinteropmsi 15.8.27825 English                      <=

为什么@{...}中包含Compare-Object的HTML表数组以及如何解决这个问题,所以它仅比较字符串?

我尝试使用foreach循环也没有成功。

Param(
    [Parameter(Mandatory = $true)]
    [Microsoft.PowerShell.Commands.HtmlWebResponseObject] $WebRequest
)

## Extract the tables out of the web request

$standardsCsv = Import-Csv .\standards.csv
$standardsArray = @($standardsCsv)

$tables = @($WebRequest.ParsedHtml.getElementsByTagName("TABLE"))
$table = $tables[3]
$rows = @($table.Rows)
$resultArray = @()

foreach ($row in $rows) {
    $cells = @($row.Cells)

    for ($counter = 0; $counter -lt $cells.Count; $counter++) {
        if ($counter -eq 1) {
            $resultArray += $cells[1].InnerText.Trim("@{}")
        }
    }
}

 Compare-Object -ReferenceObject $resultArray -DifferenceObject $standardsArray

我希望输出显示HTML数组中不在CSV导入的文件数组中的项目,但是它只是表明根本没有匹配项,因为HTML数组的每个字符周围都有@{...}项目。

0 个答案:

没有答案