Powershell 2.0 Ping计算机列表并在发生故障时发送电子邮件

时间:2014-07-16 21:38:00

标签: arrays email loops powershell

我是PowerShell的新手,我一直在研究这个问题,但我还没有找到我想要的东西。该网站仍在使用PowerShell 2,无法升级。

我有一个服务器列表,我想ping它以验证它们已启动,我正在使用文本文件来填充名称。我有脚本的ping部分工作和电子邮件部分工作正常。现在,我正在尝试将两者结合起来,以发送有关失败的特定服务器的电子邮件。

我使用以下内容:

Test-Connection -ComputerName (Get-Content Computers.txt) -Delay 5 -Quiet

这将返回每台计算机的布尔值true或false。

我知道Get-Content会自动创建一个数组。那么将结果写为关联数组的最佳方法是,还是有办法让Test-Connection一次循环一个通过Computers.txt数组,然后只是在发生故障时发送电子邮件它在特定的服务器上?

1 个答案:

答案 0 :(得分:1)

试试这个:

Get-Content Computers.txt | ForEach-Object {
    if (Test-Connection -ComputerName $_ -Delay 5 -Quiet) {
        #Send email that it was a success
    } else {
        #Computer unreachable
    }
}

基本上,您将计算机列表传递给foreach-object循环,并遍历列表,ping每台计算机并发送电子邮件。