2017-05-11 62 views
-1

我尝试使用PowerShell作为网络扫描工具来ping本地子网上的每个地址。任何成功的ping将与目标设备的IP地址一起显示。Powershell:如何在不知道子网大小的情况下扫描局域网

我已经创建了两个命令将提取IP和前缀长度Get-NetIPAddress

$myIPAddress = $(Get-NetIPAddress | ? { ($_.AddressFamily -ilike "*IPv4*") -and ($_.IPAddress -notlike "127.0.0.1") -and ($_.IPAddress -notlike "169*") } | Select -ExpandProperty IPAddress) 

$myPrefixLength = $(Get-NetIPAddress | ? { ($_.AddressFamily -ilike "*IPv4*") -and ($_.IPAddress -notlike "127.0.0.1") -and ($_.IPAddress -notlike "169*") } | Select -ExpandProperty PrefixLength) 

我也通过制造工具,将主要在/ 24的空间ping通的每个地址开始吧:

$ping = new-object system.net.networkinformation.ping; 1..254 | % {$ping.send("192.168.43.$_", 1) | select address,status} 

这也考虑到子网空间已知为/24,并且IP地址以192.168.43开头。

我试图实现的是变量,如1..254"192.168.43.$_"可以根据机器的IP地址进行更改。

难道这就超出了我应该做的初学者?如果是这样,那么我可以尝试使用哪些其他网络工具来构建我的知识水平?

+0

如果你有一个8位网络掩码的本地网络?这是16,777,216个地址进行扫描。这会花很长时间。您可以拥有任意大小的本地网络。甚至不要考虑IPv6,其中大多数网络将具有18,446,744,073,709,551,616个可能的地址,并且每秒1,000,000次扫描将超过584,542年。 –

回答

0

正如Ron Maupin所说,这可能会导致问题,但我假设您打算在小测试子网上使用它。

你可以利用这个模块

https://www.powershellgallery.com/packages/Indented.Net.IP/5.0.12/Content/Indented.Net.IP.psm1 如果您使用powershel V5,那么你可以使用此命令为同一Install-Module Indented.Net.IP -Scope CurrentUser

下面的代码片段在一个子网范围越来越ipaddresses做你是什么打算做以上模块的帮助:

Import-Module Indented.Net.IP 
    $IPAddresses = $(Get-NetIPAddress | ? { ($_.AddressFamily -ilike "*IPv4*") -and ($_.IPAddress -notlike "127.0.0.1") -and ($_.IPAddress -notlike "169*") }) 

    $ips = $ipaddresses | %{Get-NetworkRange "$($_.ipaddress)/$($_.prefixlength)"} 

    $ping = new-object system.net.networkinformation.ping; $ips.ipaddresstostring | % {$ping.send($_, 1) | select address,status} 
+0

'PS C:\ Users \ User>导入模块Indented.Net.IP 导入模块:指定的模块'Indented.Net.IP'未加载,因为在任何 模块目录中找不到有效的模块文件。 在行:1字符:1 +导入模块Indented.Net.IP + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ResourceUnavailable:(Indented.Net.IP:String)[Import-Module],FileNotFoundException + FullyQualifiedErrorId:Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand' 这就是我在输入'Import-Module Indented .Net.IP'我的powershell版本是5.1 –

+0

@MartinMartynasMarkevičius你必须运行这个命令'Install-Module Indented.Net.IP -Scope CurrentUser'才能导入它(我最初发布但是有人编辑了我的答案,我有恢复原来的答案 –

相关问题