powershell - Power Shell 测试连接,然后获取计算机名称或 mac-addr

标签 powershell network-programming ping

所以我写了一个简单的 pinger 来 ping 一个网络。我正在使用测试连接,但我也得到了设计名称。

所以我使用 cmd 的 nbtstat 来获取名称,但是(可以说它不干净)

有没有办法做到这一点更清洁?

这就是我所拥有的

$a = New-Object System.Collections.ArrayList

for ($i =0;$i -le 225; $i++){
    if (Test-Connection 192.168.1.$i -Count 1 -Quiet){
        echo "live 192.168.1.$i"
        $a.add("192.168.1.$i")
    }else {
        echo "dead 192.168.1.$i"
    }
}
echo $a
foreach ($i in $a){
    Test-Connection $i -Count 1

}

foreach ($i in $a){
    nbtstat -a $i
}

最佳答案

做某事总是有很多方法,一个这样的例子:

$Pinger = New-Object system.Net.NetworkInformation.Ping
$PC = "192.168.1.$i"

try{
            $ErrorActionPreference = "Stop"
            $PingResult = $Pinger.send($PC)
            $ResultAddress = $PingResult.Address
            $PingStatus = $PingResult.Status

            $DNSObject = [System.Net.Dns]::GetHostEntry($PC).HostName

    }
    catch
    {

    }
    finally
    {
        Write-Host "$PC $PingStatus $PingHost $? $DNSObject"
    }

这比您要求的要多,但我认为它也可能给您一些想法:
  • .NET 可供您使用,而不仅仅是 native cmdlet 和 Windows 命令
  • 是否使用 $ 之类的内置运算符?
  • 关于powershell - Power Shell 测试连接,然后获取计算机名称或 mac-addr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836662/

    相关文章:

    c - 如果我将服务器套接字绑定(bind)到设备,从 accept 生成的套接字描述符是否也会绑定(bind)到同一设备?

    linux - 编写一个 ping 当前网络的基本脚本

    java - 什么时候规范不是规范 - 全能的 RPC 博客 ping 规范难题

    powershell - PowerShell GraphQL突变解析错误

    windows - 为什么通过管道传递我的命令 | % {echo "$_"} 让 UTF-8 工作?

    azure - 如何在azure powershell中获取1天时间粒度的指标数据?

    javascript - 移动应用程序和 PC 浏览器之间的点对点通信

    network-programming - 当一个程序与其他程序或其他计算机交谈时,它叫什么

    docker - docker 注册表ping 404

    string - 在大文件中高效地搜索字符串