Ping IP地址范围

时间:2015-12-20 07:21:05

标签: powershell

我需要从文件中读取IP地址和子网掩码,并显示所有适当的IP地址和状态。此命令可以显示地址列表:

New-Object System.Net.Networkinformation.Ping.send("ip.$_")

但它只需要IP地址。如何制作也可以使用面膜?

文件示例:

192.168.0.10
255.255.255.0

4 个答案:

答案 0 :(得分:3)

Warren Frame根据Shay Levy和Boe Prox的作品编写了这个伟大的实用工具,名为Invoke-Ping。您可以提供一组这样的IP地址:

Invoke-Ping -ComputerName 192.186.0.1,192.168.0.2

Mark Gossa使用以下语法编写了一个实用程序来确定给定子网掩码的有效IP:

Get-IPs -Subnets "10.0.2.0/24","10.0.4.0/24" 

如果我们将两者结合起来......

invoke-ping -ComputerName (get-ips -Subnets "192.168.0.10/24") 

这将返回该范围内所有计算机的Pingable状态。这应该是一个很好的跳跃点。而且,Warren已经完成了将ping扩展到一系列IP的工作,这意味着你可以在10秒内ping 1000台电脑。

如果将-Quiet添加到Invoke-Ping,您将在运行时获得有效(在线)IP的列表。

192.168.0.1
192.168.0.11
192.168.0.12
192.168.0.13
192.168.0.15
192.168.0.16
192.168.0.18
192.168.0.21
192.168.0.22
192.168.0.9

这就是它的样子:

enter image description here

答案 1 :(得分:2)

由于ping协议限制,您无法在单个ping请求中ping通地址范围。

要实现您想要的功能,您需要将范围转换为IP地址列表并逐个ping(可能并行)。

答案 2 :(得分:2)

请尝试使用此脚本,它可用于ping多个主机,您将获得每个主机的状态。

根据您的更改脚本中的IP地址范围。

$ping = New-Object System.Net.Networkinformation.Ping
1..254 | % { $ping.send("192.168.100.$_") | select address, status }

答案 3 :(得分:0)

更现代的方法是使用WFTools

Install-Module WFTools -Force -AllowClobber -Confirm:$false;
Import-Module WFTools;

您可以像这样使用它:

New-IPRange -Start 10.0.0.0 -End 10.0.0.255 `
| Invoke-Ping `
| Where { $_.Status -ne "No Response" } `
| Select -Property Address
相关问题