Powershell - 具有特殊字符“>”的替代品不工作

时间:2017-06-08 04:57:08

标签: html powershell

我有一段代码在某些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;”。是否只是在正确的位置添加转义“/”字符?我怎么能用上面的代码呢?

1 个答案:

答案 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 &gt; 7</td></tr>
<tr><td>2</td><td>days &gt; 7</td></tr>
<tr><td>3</td><td>days &gt; 7</td></tr>
</table>
</body></html>

请参阅>已替换为大于号的&gt;的HTML实体代码。

因此,您的替换必须与"<td>Uptime &gt; 7 days</td>"匹配。