我需要从文件中读取IP地址和子网掩码,并显示所有适当的IP地址和状态。此命令可以显示地址列表:
New-Object System.Net.Networkinformation.Ping.send("ip.$_")
但它只需要IP地址。如何制作也可以使用面膜?
文件示例:
192.168.0.10
255.255.255.0
答案 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
这就是它的样子:
答案 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