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

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

知道为什么发生此问题吗?我尝试了多种方法来删除它(示例“第二次尝试”),但是它将在其他地方创建空表。

还是有一种方法可以在调用ConvertTo-HTML之后删除此空表?任何帮助表示赞赏。

最佳答案

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



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

我尝试添加一些虚拟/空数据进行测试,但由于我总是添加某些内容,因此它显然无法完成任何工作。

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

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

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

关于powershell - 如何阻止ConvertTo-HTML创建空表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42746075/

10-12 23:26