所以我写了一个简单的 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"
}
这比您要求的要多,但我认为它也可能给您一些想法:
关于powershell - Power Shell 测试连接,然后获取计算机名称或 mac-addr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836662/