如何从excel中检索数据以进行ip ping。。

如何从excel中检索数据以进行ip ping。。,excel,powershell,Excel,Powershell,我一直在编写一个脚本,该脚本从文本文件中提取ip地址,然后在一个永久循环中ping它们,如果有任何ip地址已死亡,则状态输出变为红色,并发送一封电子邮件以发出警报 我的剧本 $hostnamestxt = "C:\ping_machines.txt" $servers = get-content "$hostnamestxt" $date = get-date while ($true) { $i++ Write-Host "-- Round $i Machines--" # -foregro

我一直在编写一个脚本,该脚本从文本文件中提取ip地址,然后在一个永久循环中ping它们,如果有任何ip地址已死亡,则状态输出变为红色,并发送一封电子邮件以发出警报

我的剧本

$hostnamestxt = "C:\ping_machines.txt"
$servers = get-content "$hostnamestxt"
$date = get-date

while ($true) {
$i++
Write-Host "-- Round $i Machines--" # -foregroundcolor black -backgroundcolor             green 
foreach($server in $servers){
if (test-Connection -ComputerName $server -Count 2 -Quiet )  

{   
    write-host "$server is ONLINE" -foregroundcolor black -backgroundcolor green 
}  
    else 
{  
    $to = $server
        switch ($to) 
        { 
                "192.168.252.37" {$device="RAPID"; break}
                "192.168.252.39" {$device="Sash line Welder83"; break}
                "192.168.252.40" {$device="Sash line Welder84"; break}


         default {$device="error";exit}       
        }

    write-host "$device, $server is OFFLINE/UNREACHABLE" -foregroundcolor black -backgroundcolor red
    send-mailmessage -to "myemail" -subject "$device, $server is OFFLINE/UNREACHABLE at $date" -Body "$device, $server is OFFLINE/UNREACHABLE at $date"
} 
}
}
上面的工作正常,但我的问题是,当添加新设备到监视器时,我必须在txt文件中添加ip,然后还要修改脚本并将其添加到case station中

我想做的,但不知道怎么做。。从和excel电子表格中读取ip地址,比如从A列,然后名称将出现在B列中

如果任何设备出现故障,它会将B列中的名称转换为变量,以便以后处理


非常感谢您的任何帮助,因为我现在几乎被卡住了

使用CSV而不是指定文本文件。然后,您可以使用importcsv命令,它将把列表变成一个对象集合,根据您在列表中放置的内容,这些对象将具有诸如IP和Name之类的属性。你甚至可以添加一些关键性的东西。我使用了你的脚本,做了一些非常快速的更改。这样的办法应该行得通

CSV:

脚本:

$hostnamestxt = "C:\ping_machines.csv"
$servers = Import-Csv "$hostnamestxt"
$date = get-date

while ($true) {
$i++
Write-Host "-- Round $i Machines--" # -foregroundcolor black -backgroundcolor             green 
foreach($server in $servers){
$serverName = $server.Name
$serverAddress = $server.IP
if (test-Connection -ComputerName $serverAddress -Count 2 -Quiet )  

{   
    write-host "$serverName is ONLINE" -foregroundcolor black -backgroundcolor green 
}  
    else 
{  

    write-host "$serverName, $serverAddress is OFFLINE/UNREACHABLE" -foregroundcolor black -backgroundcolor red
    send-mailmessage -to "myemail" -subject "$serverName, $serverAddress is OFFLINE/UNREACHABLE at $date" -Body "$serverName, $serverAddress is OFFLINE/UNREACHABLE at $date"
} 
}
}

您好,感谢以上内容,我将进行测试并报告。我使用excel的原因是,我们有很多表,其中包含VLAN的所有不同子网。各种设备的所有颜色编码,无论是打印机、计算机还是其他启用ip的设备。它的工作表得到更新,并减少重复的机会。上述工作如预期,但我真的很想查询数据的excel工作表,再次感谢。我将研究我如何做到这一点的例子。再次感谢
$hostnamestxt = "C:\ping_machines.csv"
$servers = Import-Csv "$hostnamestxt"
$date = get-date

while ($true) {
$i++
Write-Host "-- Round $i Machines--" # -foregroundcolor black -backgroundcolor             green 
foreach($server in $servers){
$serverName = $server.Name
$serverAddress = $server.IP
if (test-Connection -ComputerName $serverAddress -Count 2 -Quiet )  

{   
    write-host "$serverName is ONLINE" -foregroundcolor black -backgroundcolor green 
}  
    else 
{  

    write-host "$serverName, $serverAddress is OFFLINE/UNREACHABLE" -foregroundcolor black -backgroundcolor red
    send-mailmessage -to "myemail" -subject "$serverName, $serverAddress is OFFLINE/UNREACHABLE at $date" -Body "$serverName, $serverAddress is OFFLINE/UNREACHABLE at $date"
} 
}
}