9

I am novice to the PowerShell scripting. I am looking to fulfill one of my requirement.

I have one hosts file which is having multiple host names and IP addresses. Below is the example of the input file.

127.0.0.1 Host1 Host2 Host3

127.0.0.2 Host4 Host5 Host6

I want to read each line and ping for the first host (Host1), then the second host (Host2) and then the third host (Host3).

While pinging each host name, I need to check the ping response IP address for that host and match it back with the IP address mentioned in the input file. Below is the snippet of code with which am trying to read the file in the above format, but it is not working in that way.

 $lines = Get-Content myfile.txt
    $lines |
     ForEach-Object{
         Test-Connection  $_.Split(' ')[1]
     }

Can anyone give me any advice or whip something in a PowerShell script for me?

4

2 回答 2

15

尝试以下方法。它应该很近。

$lines = Get-Content myfile.txt | Where {$_ -notmatch '^\s+$'} 
foreach ($line in $lines) {
    $fields = $line -split '\s+'
    $ip = $fields[0]
    $hosts = $fields[1..3]
    foreach ($h in $hosts) {
        $hostIP = (Test-Connection $h -Count 1).IPV4Address.ToString()
        if ($hostIP -ne $ip) { "Invalid host IP $hostIP for host $h" }
    }
}
于 2013-07-29T06:59:32.677 回答
2

我从来没有从 PowerShell 中看到任何东西,但我的意思是它对你有帮助。类似于以下内容:

foreach ($line in $lines.Split('\r\n')){
    Test-Connection  $line.Split(' ')[1]
}

http://en.wikipedia.org/wiki/Newline

于 2013-07-29T06:31:36.813 回答