0

我正在尝试创建 HMTL 格式的电子邮件,其中一些消息是红色的。我这样做:

[void]$mailBody.add("<p style="color:#FF0000";>Error Adding User ($Username) to Group ($group) </p> `r`n")

但是#HTML 中的 注释掉了该行的其余部分。

有没有办法避免这种情况?

4

2 回答 2

3

您在带引号的字符串中使用相同的引号。那是行不通的。PowerShell 将对其进行解析,"<p style="然后添加注释。使用不同的内引号:

[void]$mailBody.add("<p style='color:#FF0000';>Error Adding User ($Username) to Group ($group) </p> `r`n")

或逃避你的内心报价:

[void]$mailBody.add("<p style=`"color:#FF0000`";>Error Adding User ($Username) to Group ($group) </p> `r`n")
于 2020-07-01T04:45:07.427 回答
0

正如本例所示,这并不罕见……

$Style = "<style>"
$Style = $Style + "BODY{background-color:#D7D8D8;}"
$Style = $Style + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$Style = $Style + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
$Style = $Style + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
$Style = $Style + "</style>"
$ServerList = Get-Content -path B:\MYSHARE\PowershellScripts\computers.txt
$serviceList =  &{$args} IISADMIN W3SVC HTTPFilter cpsvc CitrixWMIService CtxHttp CitrixXTEServer IMAService CdmService "Citrix SMA Service"

$body = $ServerList | foreach { (Get-Service -Name $serviceList -computername $_) | 
        Select-Object MachineName, Name, DisplayName, Status | ConvertTo-HTML -Fragment}

<# possible values
[enum]::GetValues([System.ServiceProcess.ServiceControllerStatus])
Stopped
StartPending
StopPending
Running
ContinuePending
PausePending
Paused

the field tag looks like this <td>Running</td> we need it to look like this 
<td bgcolor="#00ff00">Running</td>

#>
$colorTagTable = @{Stopped = ' bgcolor="#ff0000">Stopped<';
                   Running = ' bgcolor="#00ff00">Running<'}

#get possible values look them in text sorrounded by > < and replace them with style (pun intended).
$colorTagTable.Keys | foreach { $body = $body -replace ">$_<",($colorTagTable.$_) }

ConvertTo-HTML -head $Style -body "<H2>Validation Completed</H2> $body" | 
Out-File "B:\MYSHARE\PowershellScripts\Validated.htm"

所以,这可以被看作是这个 SO 接受的答案的副本......

在 Powershell 电子邮件中设置 HTML 字体颜色

...使用稍微不同的方法,但是,它也指向上述资源。

您将在对您的用例的一般搜索中找到更多示例。

于 2020-07-01T03:43:40.763 回答