Email Powershell脚本正在发送3封电子邮件,而不是1封
我有一个脚本,ping的ip地址和发送电子邮件,如果一个或多个不成功。脚本正在工作,但当它发送电子邮件时,它会发送3份副本,而不仅仅是一份。任何帮助都将不胜感激Email Powershell脚本正在发送3封电子邮件,而不是1封,email,powershell,Email,Powershell,我有一个脚本,ping的ip地址和发送电子邮件,如果一个或多个不成功。脚本正在工作,但当它发送电子邮件时,它会发送3份副本,而不仅仅是一份。任何帮助都将不胜感激 param($alert) # Create the variables $global:GArgs = $Args $TimeStop = "23:55" $errorCount = 0 $urlsToTest = @{} $urlsToTest["HCC Brandon"] = "ip address" $urlsToTest[
param($alert)
# Create the variables
$global:GArgs = $Args
$TimeStop = "23:55"
$errorCount = 0
$urlsToTest = @{}
$urlsToTest["HCC Brandon"] = "ip address"
$urlsToTest["HCC Dale Mabry"] = "ip address"
$urlsToTest["HCC Plant City"] = "ip address"
$urlsToTest["HCC South Shore"] = "ip address"
$urlsToTest["HCC Ybor"] = "ip address"
$urlsToTest["HCC Admin"] = "ip address"
$errorTime =@{}
$errorTime["HCC Brandon"] = "5/7/2015 02:00:00 AM"
$errorTime["HCC Dale Mabry"] = "5/7/2015 02:00:00 AM"
$errorTime["HCC Plant City"] = "5/7/2015 02:00:00 AM"
$errorTime["HCC South Shore"] = "5/7/2015 02:00:00 AM"
$errorTime["HCC Ybor"] = "5/7/2015 02:00:00 AM"
$errorTime["HCC Admin"] = "5/7/2015 02:00:00 AM"
$ping = new-object System.Net.NetworkInformation.Ping
Do {
foreach ($key in $urlsToTest.Keys) {
$output = ""
$startTime = get-date
$output = $ping.send($urlsToTest[$key])
$endTime = get-date
if (((New-TimeSpan -Start $errorTime[$key]).hours) -ge "1") {
if ($output.status.tostring() –eq "Success") {
$key + "`t`tSuccess`t`t" + $startTime.DateTime + "`t`t" + ($endTime - $startTime).TotalSeconds + " seconds"
if ($GArgs -eq "-log") {
$key + "`t`tSuccess`t`t" + $startTime.DateTime + "`t`t" + ($endTime - $startTime).TotalSeconds + " seconds" >> BACboneSiteTest.log
}
} else {
$errorCount++
$key + "`t`tFail`t`t" + $startTime.DateTime + "`t`t" + ($endTime - $startTime).TotalSeconds + " seconds"
$errorTime[$key] = Get-Date
if ($GArgs -eq "-log") {
$key + "`t`tFail`t`t" + $startTime.DateTime + "`t`t" + ($endTime - $startTime).TotalSeconds + " seconds" >> BACboneSiteTest.log
}
}
} else {
$key + "`t`tSkipping`t`t"
}
}
if ($errorCount -ge 1) {
if ($alert) {
$EmailFrom = "emailfrom"
$EmailTo = "emailto"
$Subject = "BACbone Test Failure - " + $startTime
$body = "BACbone Test Failure: " + $startTime
$smtpServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password");
$SMTPClient.Send($EmailFrom,$EmailTo,$Subject,$body)
}
}
$errorCount = 0
start-sleep -seconds 30
}Until ((get-date).Hour -eq $TimeStop.Hour -and (get.date).Minute -eq $TimeStop.Minute)
$ping = $null
您的电子邮件发送代码块位于
foreach
循环内。这是故意的吗?如果它发送了3份副本,那么您将调用.send()
三次。可能是因为你的foreach循环中包含了send内容。好吧,就是这样。我在邮件部分下面有一个括号,将其保留在foreach循环中。我看不见的愚蠢错误。谢谢!!