我正在使用此代码将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数组的每个字符周围都有@{...}
项目。