如何阻止 ConvertTo-HTML 创建一个空的 table?

How can I stop ConvertTo-HTML from creating an empty table?

我正在尝试使用 PowerShell 创建报告 ConvertTo-HTML

if($FileLine){
    $frag1 = $FileLine | Sort-Object Name  | ConvertTo-Html -Fragment -Property Name,Action -PreContent “<h3>Group Sync : $gcount change(s)</h3>” | Out-String
}else{
    $frag1 = "<h3>Group Sync : $gcount change(s)</h3>There is no change on any group."
}
if($FileLine2){
    $frag2 = $FileLine2 | Sort-Object Name | ConvertTo-Html -Fragment -Property Name,Action,AddedGroups,DeletedGroups -PreContent “<h3>User Sync : $ucount change(s)</h3>” |Out-String
}else{
    $frag2 = "<h3>User Sync : $ucount change(s)</h3>There is no change on any user."
}

#1st try
ConvertTo-Html -head $head -PostContent $frag1,$frag2 -PreContent "<!--empty-->" -body "<BR>" | Out-File $emailfile
#2nd try
#ConvertTo-HTML -body "$frag1 $frag2" -PostContent "<BR>nothing" -head $head | Out-File $emailfile

然而,这段代码在我的 HTML 中生成了一个空的 table。

知道为什么会出现这个问题吗?我尝试了多种方法来删除它(示例“第二次尝试”),但它会在其他地方创建空 table 。

或者有没有办法在调用 ConvertTo-HTML 后删除这个空的 table?感谢任何帮助。

我知道您的主要问题是什么,但您可能需要自己找出解决方案。阅读 ConvertTo-HTML on TechNet

的描述

The ConvertTo-Html cmdlet converts .NET Framework objects into HTML that can be displayed in a Web browser. You can use this cmdlet to display the output of a command in a Web page.

在最后一次通话中(在两次尝试中)您没有指定 -InputObject,这通常用作空 table 的内容。鉴于它是可选的,这不是错误,但 cmdlet 无论如何都会创建占位符 table。您 $frags 看不到这一点,因为您通过管道提供了对象。

我尝试添加一些 dummy/empty 数据进行测试,但它显然没有完成任何事情,因为我总是在添加一些东西。

如果您愿意使用一些正则表达式,您可以清除空白 table。

(ConvertTo-Html | Out-String) -replace "(?sm)<table>\s+</table>"

除此之外,缺少构建您自己的 HTML 内容,我不知道如何避免这种情况。