如何从PowerShell中的文件中读取一行

sha*_*our 9 powershell

我是PowerShell脚本的新手.我希望满足我的要求之一.

我有一个主机文件,它有多个主机名和IP地址.以下是输入文件的示例.

127.0.0.1 Host1 Host2 Host3

127.0.0.2 Host4 Host5 Host6
Run Code Online (Sandbox Code Playgroud)

我想读取每一行并ping第一个主机(Host1),然后是第二个主机(Host2),然后是第三个主机(Host3).

在ping每个主机名时,我需要检查该主机的ping响应IP地址,并将其与输入文件中提到的IP地址进行匹配.下面是我尝试以上述格式读取文件的代码片段,但它不能以这种方式工作.

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

任何人都可以给我任何建议或者在我的PowerShell脚本中鞭打一些东西吗?

Kei*_*ill 14

尝试以下方法.应该很接近.

$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" }
    }
}
Run Code Online (Sandbox Code Playgroud)


Fil*_*lný 2

我从未见过 PowerShell 的任何内容,但我的意思是它会对您有所帮助。像下面这样:

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

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