发送包含多个数据的一封电子邮件

Send a single email with multiple data

我有一个脚本可以查看应用程序上的超载 table。

如果 table 超过 table 最大值的 90%,则脚本会发送一封包含超载 table 的电子邮件。

为此,我创建了一个函数来分析 table :

# elemt is the current data and Max is the maximum of the table
$elemt = @($PcaDos, $PcaMal, $PcaRdv, $Pc2Tpt, $Pc2Dti, $Pc2His, $PcaLigFact)
$tableMax =  @($PcaDosMax, $PcaMalMax, $PcaRdvMax, $Pc2TptMax, $Pc2DtiMax, $Pc2HisMax, $PcaLigFactMax)

#   calculates 90% of the maximum of the table 
$total = @()
Foreach($item in $tableMax){
 $value = $item * 0.9
 $total += $value
}

function OverloadTable{
    param(
        $variable,
        [int]$num,
        [String]$table
    )
if($Variable -gt $total[$Num]){
    $path = "The $path table is overloaded"
    $path
    echo 'sending mail' 
 }else{
    echo "The $table table is not overloaded"

 }
}

OverloadTable -Variable $PcaDos -Num 0 -Table PcaDos 
OverloadTable -Variable $PcaMal -Num 1 -Table PcaMal
OverloadTable -Variable $PcaRdv -Num 2 -Table PcaRdv
OverloadTable -Variable $Pc2Tpt -Num 3 -Table Pc2Tpt
OverloadTable -Variable $Pc2Dti -Num 4 -Table Pc2Dti
OverloadTable -Variable $Pc2His -Num 5 -Table Pc2His
OverloadTable -Variable $PcaLigFact -Num 6 -Table PcaLigFact

此函数有效,但它会为每个超载 table 发送一封电子邮件,而我希望它为每个超载 table 发送一封电子邮件。我试图在函数中创建一个列表,但函数不保存以前的变量。我还尝试将每个超载的 table 的元素列表设置为 1,将其他超载的元素列表设置为 0,并将 table 的邮件发送到 1,但它也不起作用。我是函数的初学者。我知道这是可能的,但也许我没有使用正确的方式

这可能对你有用。可能是最少的编辑,但我确定这不是最好的方法...

  1. 像@zett42 建议的那样更正为 $Table。

  2. 从函数中删除您的电子邮件执行。 假设“echo 'sending mail'”是实际执行。

  3. 由于您在函数中表达 $Path,尽管您也可以使用 return $Path。删除电子邮件正文中您不想要的回声。然后用这样的子表达式运算符包装你的函数调用...

$(
    OverloadTable -Variable $PcaDos -Num 0 -Table PcaDos 
    OverloadTable -Variable $PcaMal -Num 1 -Table PcaMal
    OverloadTable -Variable $PcaRdv -Num 2 -Table PcaRdv
    OverloadTable -Variable $Pc2Tpt -Num 3 -Table Pc2Tpt
    OverloadTable -Variable $Pc2Dti -Num 4 -Table Pc2Dti
    OverloadTable -Variable $Pc2His -Num 5 -Table Pc2His
    OverloadTable -Variable $PcaLigFact -Num 6 -Table PcaLigFact
) | Foreach-Object { $EMAILBODY += $_ + "`r`n" }
  1. ForEach-Object 部分将从每个函数输出的 $Path 中为您连接一个字符串并添加换行符,因此如果您不需要,请将其删除。
  2. 使用 $EMAILBODY 执行您的电子邮件(功能之外)。

Subexpression Operator