我正在尝试读取主机文件并尝试 ping 每个主机名,然后在响应中捕获 IP 地址并尝试与主机文件中提到的 IP 地址匹配。
我有三种情况:-
1)它 ping 主机并以正确的 IP 结果返回回复:-已解决并已回复 2)它根本不 ping 且未解析 IP 结果:-未解决且未回复 3)它正在 Ping 但未解析 IP正确提及主机文件中的 IP 结果:-未解决和回复
我正在尝试使用以下脚本来实现该场景,但由于需要使用不同的表达式而没有完全实现。
有人可以帮我完成吗
$lines = Get-Content myfile.txt | Where {$_ -notmatch "((^#)|(^\s+$))"}
# get all test pairs
$tests=$lines |
ForEach-Object{
$fields = $_ -split '\s+'
echo " Fields are $fields"
for ($i = 1; $i -lt $fields.Length; $i++){
New-Object PsObject -Property @{IP=$fields[0];Host=$fields[$i]}
}
}
$tests |
ForEach-Object{
$props=@{
IPAddress=$_.ip
Hostname=$_.Host
Resolve =' '
Reply = ' '
}
$PingResult = ping -n 1 -w 10 $_.host
#echo "$PingResult"
foreach ($line in $PingResult)
{
if ($line.StartsWith("Pinging") -eq $true)
{
$_.ip= $line -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
echo "IP is $IP"
if ($matches[0])
{
$props.Resolve ='Y'
$props.Reply='Y'
}
else
{
$props.Resolve ='Y'
$props.Reply='N'
}
}
}New-Object PsCustomObject -Property $props
}|
Format-Table -AutoSize | Out-String | Out-File D:\CEP\testlogging.txt
注意:- 不能使用 Test-Connection,因为当服务器不回复或不存在并且需要更多时间来 ping 时,它会引发异常。
谢谢。