Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email Powershell脚本正在发送3封电子邮件,而不是1封_Email_Powershell - Fatal编程技术网

Email Powershell脚本正在发送3封电子邮件,而不是1封

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[

我有一个脚本,ping的ip地址和发送电子邮件,如果一个或多个不成功。脚本正在工作,但当它发送电子邮件时,它会发送3份副本,而不仅仅是一份。任何帮助都将不胜感激

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循环中。我看不见的愚蠢错误。谢谢!!