如何阻止ConvertTo-HTML创建空表?

时间:2017-03-12 10:05:07

标签: powershell powershell-v2.0

我正在尝试使用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中产生了一个空表。

Image showing empty table tags

知道为什么会出现这个问题吗?我已经尝试了多种方法来删除它(示例&#34;第二次尝试&#34;)但它会在其他地方创建空表。

或者有没有办法在调用ConvertTo-HTML后删除这个空表?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

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

的说明
  

ConvertTo-Html cmdlet将.NET Framework对象转换为可以在Web浏览器中显示的HTML。您可以使用此cmdlet在网页中显示命令的输出。

在最后一次调用中(在两个trys中),您没有指定-InputObject,这通常用作空表的内容。看作是可选的,这不是错误,但cmdlet无论如何都创建了占位符表。你不会在$frag看到这个,因为你通过管道提供了对象。

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

如果你愿意使用一些正则表达式,你可以擦掉空表。

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

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