如何根据VBO作业状态动态替换表格tg-aff0类的背景色?
问题描述
执行$status = $job.LastStatus会返回success或false,需要实现:
- 当状态为
success时,为样式.tg-aff0应用背景色#00B050 - 当状态为
false时,为样式.tg-aff0应用背景色#FB9895
现有PowerShell代码片段如下:
$job = Get-VBOJob -name jobname $status = $job.LastStatus $name = $job.Name $job_stats_get = Get-VBOJobSession -Job $job -Last $job_stats_get.statistics $EmailBody = @" <style type="text/css"> .tg {border-collapse:collapse;border-spacing:0;} .tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-aff0{background-color:#00B050;color:#ffffff;border-color:inherit;font-size:36px;text-align:center;vertical-align:top}
解决方案
通过条件判断动态设置背景色值,再嵌入到Here-String的样式中即可实现需求,修改后的完整代码如下:
$job = Get-VBOJob -name jobname $status = $job.LastStatus $name = $job.Name $job_stats_get = Get-VBOJobSession -Job $job -Last $job_stats_get.statistics # 根据状态动态选择背景色 $bgColor = if ($status -eq 'success') { '#00B050' } else { '#FB9895' } $EmailBody = @" <style type="text/css"> .tg {border-collapse:collapse;border-spacing:0;} .tg td{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; overflow:hidden;padding:10px 5px;word-break:normal;} .tg th{border-color:black;border-style:solid;border-width:1px;font-family:Arial, sans-serif;font-size:14px; font-weight:normal;overflow:hidden;padding:10px 5px;word-break:normal;} .tg .tg-aff0{background-color:$bgColor;color:#ffffff;border-color:inherit;font-size:36px;text-align:center;vertical-align:top} </style> "@
关键说明
- 新增
$bgColor变量,通过if-else判断$status的值,分别赋值对应的背景色代码 - 在Here-String的
.tg-aff0样式中,将固定背景色替换为变量$bgColor,PowerShell会自动解析并替换变量值 - 补充了Here-String的闭合标签
</style>和结束符"@,确保代码语法完整
内容的提问来源于stack exchange,提问作者andrew
相关产品推荐
相关产品推荐

