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

时间:2016-01-21 14:24:20

标签: excel powershell

我一直在编写脚本,从文本文件中提取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,然后还修改脚本并进入案例陈述。

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

如果任何设备关闭,则转换B列中的名称,然后将其放入变量中以便稍后处理。

任何帮助都非常感激,因为我现在几乎陷入困境。

1 个答案:

答案 0 :(得分:0)

不使用指定文本文件,而是使用CSV。然后,您可以使用Import-CSV命令行开关,它会将列表转换为对象集合,这些对象将具有IP和名称等属性,具体取决于您在列表中放置的内容。你甚至可以为关键性添加一些东西。我使用了你的脚本并进行了几次非常快速的更改。这样的事情应该有效。

CSV:

IP,Name
192.168.252.37,RAPID
...

脚本:

$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"
} 
}
}