我有一段代码在某些HTML输出中对-replace
个条目执行<td>
。
读取的数据来自.csv,因此所有值都是字符串类型
整个代码块如下:
$Report | Select Server, WMI, SVC, UptimeDays | ConvertTo-HTML | ForEach {
$PSitem -replace "<td>Not installed</td>", "<td style='background-
color:Yellow;color=black'>Not installed</td>"`
-replace "<td>Failed</td>", "<td style='background-
color:#FF0000;color=white'>Failed</td>"`
-replace "<td>Installed/Not running</td>", "<td style='background-
color:#FF0000;color=white'>Installed/Not running</td>"`
-replace "<td>WMI timed-out</td>", "<td style='background-
color:#FF0000;color=white'>WMI timed-out</td>"`
-replace "<td>Offline</td>", "<td style='background-
color:#FF0000;color=white'>Offline</td>"`
-replace "<td>Uptime > 7 days</td>", "<td style='background-
color:Yellow;color=black'>Uptime > 7 days</td>"
} | out-String
所有条目的-replace
,具有预期的彩色背景/文字,但不适用于"<td> Uptime > 7 days</td>"
...我假设是因为我在那里有">"
。我宁愿不重新格式化输入CSV以删除“&gt;”。是否只是在正确的位置添加转义“/”字符?我怎么能用上面的代码呢?
答案 0 :(得分:2)
即使你没有回答我评论的相关部分,我也非常肯定:
测试数据:
PS D:\t> 1,2,3|select @{n='num';e={$_}},@{n='days';e={'days > 7'}}
num days
--- ----
1 days > 7
2 days > 7
3 days > 7
转换为HTML:
PS D:\t> 1,2,3|select @{n='num';e={$_}},@{n='days';e={'days > 7'}} | ConvertTo-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>
<title>HTML TABLE</title>
</head><body>
<table>
<colgroup><col/><col/></colgroup>
<tr><th>num</th><th>days</th></tr>
<tr><td>1</td><td>days > 7</td></tr>
<tr><td>2</td><td>days > 7</td></tr>
<tr><td>3</td><td>days > 7</td></tr>
</table>
</body></html>
请参阅>
已替换为大于号的>
的HTML实体代码。
因此,您的替换必须与"<td>Uptime > 7 days</td>"
匹配。