PowerShell将电子邮件发送到另一个脚本中的地址列表

时间:2014-08-05 14:30:03

标签: email powershell powershell-v2.0 ping

我正在尝试创建一个PowerShell脚本,该脚本会将电子邮件发送给人员列表,但电子邮件调用已嵌入到ping脚本中。这适用于只有PowerShell v2.0的系统。

Computers.txt包含要ping的计算机列表,失败时会发送电子邮件。

这是我试图修改的现有脚本:

Get-Content -path "E:\Computers.txt" | ForEach-Object {
if (-not (Test-Connection -ComputerName $_ -Delay 2 -Quiet)) {
    Send-MailMessage -To "email address" -Subject "$_ is Unreachable" -Body "$_ is unreachable by ping. Next check is in 5 minutes" -SmtpServer "server address" -From "another email address"  
    } 
}

我知道我可以使用Get-Content -path“E:\ From_Email.txt”和Get-Content -path“E:\ To_Email.txt”来调用电子邮件地址列表,但我不确定如何在现有命令中执行此操作。我已经在线查看了,但我还没有找到如何在PowerShell中为脚本调用其他文本文件。

我是否需要提前调用这些文件并将它们设置为等于被调用的变量?任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

假设您在" E:\ To_Email.txt"的每一行都有一个电子邮件地址,则以下代码应该可以使用

$emails = (Get-Content "E:\To_Email.txt") -join ";"
Get-Content -path "E:\Computers.txt" | ForEach-Object {
if (-not (Test-Connection -ComputerName $_ -Delay 2 -Quiet)) {
  Send-MailMessage -To $emails -Subject "$_ is Unreachable" -Body "$_ is unreachable by ping. Next check is in 5 minutes" -SmtpServer "server address" -From "another email address"  
  }
}

额外的第一行将电子邮件列表文件的所有行作为数组读入,然后将其与分号连接,我认为应该将您的电子邮件地址分开。值得一试。

" E:\ To_Email.txt"

的示例内容
person.one@yourdomain.whatever
person.two@yourdomain.whatever
person.three@yourdomain.whatever
person.four@yourdomain.whatever