我是PowerShell脚本的新手。我希望满足我的一项要求。
我有一个hosts file,它有多个主机名和IP地址。以下是输入文件的示例。
127.0.0.1 Host1 Host2 Host3
127.0.0.2 Host4 Host5 Host6
我想读取每一行并ping第一个主机(Host1),然后是第二个主机(Host2),然后是第三个主机(Host3)。
在ping每个主机名时,我需要检查该主机的ping响应IP地址,并将其与输入文件中提到的IP地址进行匹配。下面是我尝试以上述格式读取文件的代码片段,但它不能以这种方式工作。
$lines = Get-Content myfile.txt
$lines |
ForEach-Object{
Test-Connection $_.Split(' ')[1]
}
有人可以给我任何建议或在PowerShell脚本中为我做点什么吗?
答案 0 :(得分: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" }
}
}
答案 1 :(得分:1)
我从未见过PowerShell的任何内容,但我的意思是它对你有所帮助。 如下所示:
foreach ($line in $lines.Split('\r\n')){
Test-Connection $line.Split(' ')[1]
}