首页 > 解决方案 > Powershell Compare-Object 修改侧指示器

问题描述

我有两个来自打印服务器的文本文件,需要从结果中获取 HTML 文档,当我运行当前代码时,我创建了 HTML,但它填充了数字而不是正确的数据。

$Compare = Compare-Object $Reference $Difference |
  %{
    if ($_.SideIndicator -eq "<=" {$($_.InputObject) does not exist on 01"}
    if ($_.SideIndicator -eq "=>" {$($_.InputObject) does not exist on 02"} 
 } | Convertto-HTML -As LIST | Out-String
 
 Convertto-HTML -Head $Header -Body $Compare | Out-file $Location

数据应如下所示(显然这有侧面指标)

在此处输入图像描述

当我包含上面的代码时,这就是返回的内容。

在此处输入图像描述

标签: powershell

解决方案


继续我的评论。

这是你想做的事情吗?

Clear-Host
$Header = @'
<style>
TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}
</style>
'@

Compare-Object -ReferenceObject 'D:\Temp\Source\FileList1.txt' -DifferenceObject 'D:\Temp\Source\FileList2.txt' | 
ForEach-Object {
    [PSCustomObject]@{
        SideIndicator = switch ($PSItem.SideIndicator)
                        {
                            '=>' {"$($PSItem) does not exist on FileList2"}
                            '<=' {"$($PSItem) does not exist on FileList1"}
                        }
    }
} | 
ConvertTo-Html -Property '*' -Head $Header | 
Out-File -FilePath 'D:\Temp\FileCompareReport.html'

Get-Content -Path 'D:\Temp\FileCompareReport.html'
# Results
<#
Get-Content -Path 'D:\Temp\FileCompareReport.html'
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}
</style>
</head><body>
<table>
<colgroup><col/></colgroup>
<tr><th>*</th></tr>
<tr><td>=&gt; does not exist on FileList2</td></tr>
<tr><td>&lt;= does not exist on FileList1</td></tr>
</table>
</body></html>
#>

Invoke-Item -Path 'D:\Temp\FileCompareReport.html'

推荐阅读