发送包含多个数据的一封电子邮件
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,但它也不起作用。我是函数的初学者。我知道这是可能的,但也许我没有使用正确的方式
这可能对你有用。可能是最少的编辑,但我确定这不是最好的方法...
像@zett42 建议的那样更正为 $Table。
从函数中删除您的电子邮件执行。
假设“echo 'sending mail'”是实际执行。
由于您在函数中表达 $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" }
- ForEach-Object 部分将从每个函数输出的 $Path 中为您连接一个字符串并添加换行符,因此如果您不需要,请将其删除。
- 使用 $EMAILBODY 执行您的电子邮件(功能之外)。
我有一个脚本可以查看应用程序上的超载 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,但它也不起作用。我是函数的初学者。我知道这是可能的,但也许我没有使用正确的方式
这可能对你有用。可能是最少的编辑,但我确定这不是最好的方法...
像@zett42 建议的那样更正为 $Table。
从函数中删除您的电子邮件执行。 假设“echo 'sending mail'”是实际执行。
由于您在函数中表达 $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" }
- ForEach-Object 部分将从每个函数输出的 $Path 中为您连接一个字符串并添加换行符,因此如果您不需要,请将其删除。
- 使用 $EMAILBODY 执行您的电子邮件(功能之外)。