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

如何从PowerShell中的文件中读取行,powershell,Powershell,我是PowerShell脚本编写的新手。我希望能满足我的一个要求 我有一个是有多个主机名和IP地址。下面是输入文件的示例 127.0.0.1 Host1 Host2 Host3 127.0.0.2 Host4 Host5 Host6 我想读取第一台主机(Host1)、第二台主机(Host2)和第三台主机(Host3)的每一行和ping 在ping每个主机名时,我需要检查该主机的ping响应IP地址,并将其与输入文件中提到的IP地址进行匹配。下面是我试图以上述格式读取文件的代码片段,但它不是以

我是PowerShell脚本编写的新手。我希望能满足我的一个要求

我有一个是有多个主机名和IP地址。下面是输入文件的示例

127.0.0.1 Host1 Host2 Host3

127.0.0.2 Host4 Host5 Host6
我想读取第一台主机(Host1)、第二台主机(Host2)和第三台主机(Host3)的每一行和ping

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

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

有人能给我一些建议或在PowerShell脚本中为我做点什么吗?

我从来没有在PowerShell中看到过任何东西,但我的意思是,这对你有帮助。 如下所示:

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

尝试以下方法。应该很近

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

谢谢brnopcman,但它给出了错误,因为拆分函数仅包含在System.Object[]中。它不能用于for-each。好的,我正在查找其他内容:
测试连接
将使用主机文件中的IP,因为它在解析顺序中是第一个,所以我认为它将始终匹配主机文件中的内容。谢谢Keith,我试着运行你的脚本,但它给出了以下问题。无法覆盖变量主机,因为它是只读或常量。在D:\CEP\TestScript.ps1:6 char:12+foreach@sharsourdoh中,使用了一个内置变量的名称。我修正了。@AndyArismendi在这种情况下,您可以清除主机设置文件,运行脚本,然后将条目还原到主机文件。