根据另一个单元格值为一个单元格着色
Color a cell on the basis of another cell value
我有一个文件 output.txt 包含以下内容:
SERVER_NAME MOUNT_POINT TOTAL_SPACE USED_SPACE USED_PERCENTAGE AVAILABLE_SPACE
Server_1 /dev 1200G 537G 54% 464G
Server_2 /dev 600G 490G 85% 94G
Server_3 /dev 600G 402G 69% 181G
Backup_server /storage 800G 682G 72% 278G
使用以下脚本,我格式化了 output.txt 文件以通过电子邮件接收通知。现在我正在尝试比较最后两列(USED_PERCENTAGE
和 AVAILABLE_SPACE
),如果特定单元格的 USED_PERCENTAGE
值大于 90%,则相应的 AVAILABLE_SPACE
单元格的背景应为红色。
你能告诉我如何在下面的脚本中做到这一点吗?
$smtpServer = "xyz.bla.com"
$smtpFrom = "No-reply@bla.com"
$smtpTo = "abc@mail.com"
$messageSubject = "Space notification"
$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
$message.Subject = $messageSubject
$message.IsBodyHTML = $true
$data = Get-Content D:\output.txt | select -Skip 1 | ForEach-Object{
$splitLine = $_ -split '\s+'
[pscustomobject] @{
'SERVER_NAME' = $splitLine[0]
'MOUNT_POINT' = $splitLine[1]
'TOTAL_SPACE' = $splitLine[2]
'USED_SPACE' = $splitLine[3]
'USED_PERCENTAGE' = $splitLine[4]
'AVAILABLE_SPACE' = $splitLine[5]
}
}
$headerStyle = 'style = "border: 1px solid black; background: #dddddd; padding: 5px;"'
$normalDataStyle = 'style = "border: 1px solid black; padding: 5px;text-align:center;"'
$backupRowStyle = 'bgcolor="#81F7F3"'
$normalRowStyle = 'bgcolor="#D0F5A9"'
$body = "<table style=`"border: 1px solid black; border-collapse: collapse;`">`r`n"
$body = $body + "<tr><th $headerStyle>SERVER_NAME</th><th $headerStyle>MOUNT_POINT</th><th $headerStyle>TOTAL_SPACE</th><th $headerStyle>USED_SPACE</th><th $headerStyle>USED_PERCENTAGE</th><th $headerStyle>AVAILABLE_SPACE</th></tr>`r`n"
$data | ForEach-Object{
Switch($_.CLUSTER_NAME){
"Server_1"{$rowStyle = $normalRowStyle}
"Server_2"{$rowStyle = $normalRowStyle}
"Server_3"{$rowStyle = $normalRowStyle}
"Backup_server"{$rowStyle = $backupRowStyle}
default{$rowStyle = ""}
}
$body = $body + "<tr $rowstyle><td $normalDataStyle>$($_.SERVER_NAME)</td><td $normalDataStyle>$($_.MOUNT_POINT)</td><td $normalDataStyle>$($_.TOTAL_SPACE)</td><td $normalDataStyle>$($_.USED_SPACE)</td><td $normalDataStyle>$($_.USED_PERCENTAGE)</td><td $normalDataStyle>$($_.AVAILABLE_SPACE)</td></tr>`r`n"
}
$body = '<body>' + $body + '</table><br/><br/><b>NOTE:</b> This is an automatically generated email, please do not reply to it.</body>'
$message.Body = $Body
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)
如果有条件,您应该使用不同的样式来格式化您的 HTML 结果。为此,您为数据样式声明一个变量,如果您的条件为假,则该变量应等于 $normalDataStyle
,如果条件为真,则为特殊样式。
$redDataStyle='style = "border: 1px solid black; background: #c00000; padding: 5px;text-align:center;"'
# add "background" parameter to normal style
$data | ForEach-Object{
# <switch skipped>
$spaceStyle=$normalDataStyle
$percent = $_.USED_PERCENTAGE.substring(0,$_.USED_PERCENTAGE.indexOf("%")
#strips "%" off percentage, making it a number
if ($percent -gt 89) { $spaceStyle=$redDataStyle}
$body = $body + "<tr $rowstyle><td $normalDataStyle>$($_.SERVER_NAME)</td><td $normalDataStyle>$($_.MOUNT_POINT)</td><td $normalDataStyle>$($_.TOTAL_SPACE)</td><td $normalDataStyle>$($_.USED_SPACE)</td><td $spaceStyle>$($_.USED_PERCENTAGE)</td><td $spaceStyle>$($_.AVAILABLE_SPACE)</td></tr>`r`n"
}
我有一个文件 output.txt 包含以下内容:
SERVER_NAME MOUNT_POINT TOTAL_SPACE USED_SPACE USED_PERCENTAGE AVAILABLE_SPACE
Server_1 /dev 1200G 537G 54% 464G
Server_2 /dev 600G 490G 85% 94G
Server_3 /dev 600G 402G 69% 181G
Backup_server /storage 800G 682G 72% 278G
使用以下脚本,我格式化了 output.txt 文件以通过电子邮件接收通知。现在我正在尝试比较最后两列(USED_PERCENTAGE
和 AVAILABLE_SPACE
),如果特定单元格的 USED_PERCENTAGE
值大于 90%,则相应的 AVAILABLE_SPACE
单元格的背景应为红色。
你能告诉我如何在下面的脚本中做到这一点吗?
$smtpServer = "xyz.bla.com"
$smtpFrom = "No-reply@bla.com"
$smtpTo = "abc@mail.com"
$messageSubject = "Space notification"
$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
$message.Subject = $messageSubject
$message.IsBodyHTML = $true
$data = Get-Content D:\output.txt | select -Skip 1 | ForEach-Object{
$splitLine = $_ -split '\s+'
[pscustomobject] @{
'SERVER_NAME' = $splitLine[0]
'MOUNT_POINT' = $splitLine[1]
'TOTAL_SPACE' = $splitLine[2]
'USED_SPACE' = $splitLine[3]
'USED_PERCENTAGE' = $splitLine[4]
'AVAILABLE_SPACE' = $splitLine[5]
}
}
$headerStyle = 'style = "border: 1px solid black; background: #dddddd; padding: 5px;"'
$normalDataStyle = 'style = "border: 1px solid black; padding: 5px;text-align:center;"'
$backupRowStyle = 'bgcolor="#81F7F3"'
$normalRowStyle = 'bgcolor="#D0F5A9"'
$body = "<table style=`"border: 1px solid black; border-collapse: collapse;`">`r`n"
$body = $body + "<tr><th $headerStyle>SERVER_NAME</th><th $headerStyle>MOUNT_POINT</th><th $headerStyle>TOTAL_SPACE</th><th $headerStyle>USED_SPACE</th><th $headerStyle>USED_PERCENTAGE</th><th $headerStyle>AVAILABLE_SPACE</th></tr>`r`n"
$data | ForEach-Object{
Switch($_.CLUSTER_NAME){
"Server_1"{$rowStyle = $normalRowStyle}
"Server_2"{$rowStyle = $normalRowStyle}
"Server_3"{$rowStyle = $normalRowStyle}
"Backup_server"{$rowStyle = $backupRowStyle}
default{$rowStyle = ""}
}
$body = $body + "<tr $rowstyle><td $normalDataStyle>$($_.SERVER_NAME)</td><td $normalDataStyle>$($_.MOUNT_POINT)</td><td $normalDataStyle>$($_.TOTAL_SPACE)</td><td $normalDataStyle>$($_.USED_SPACE)</td><td $normalDataStyle>$($_.USED_PERCENTAGE)</td><td $normalDataStyle>$($_.AVAILABLE_SPACE)</td></tr>`r`n"
}
$body = '<body>' + $body + '</table><br/><br/><b>NOTE:</b> This is an automatically generated email, please do not reply to it.</body>'
$message.Body = $Body
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)
如果有条件,您应该使用不同的样式来格式化您的 HTML 结果。为此,您为数据样式声明一个变量,如果您的条件为假,则该变量应等于 $normalDataStyle
,如果条件为真,则为特殊样式。
$redDataStyle='style = "border: 1px solid black; background: #c00000; padding: 5px;text-align:center;"'
# add "background" parameter to normal style
$data | ForEach-Object{
# <switch skipped>
$spaceStyle=$normalDataStyle
$percent = $_.USED_PERCENTAGE.substring(0,$_.USED_PERCENTAGE.indexOf("%")
#strips "%" off percentage, making it a number
if ($percent -gt 89) { $spaceStyle=$redDataStyle}
$body = $body + "<tr $rowstyle><td $normalDataStyle>$($_.SERVER_NAME)</td><td $normalDataStyle>$($_.MOUNT_POINT)</td><td $normalDataStyle>$($_.TOTAL_SPACE)</td><td $normalDataStyle>$($_.USED_SPACE)</td><td $spaceStyle>$($_.USED_PERCENTAGE)</td><td $spaceStyle>$($_.AVAILABLE_SPACE)</td></tr>`r`n"
}