将arp-g的输出存储到powershell变量中
我只需要存储MAC地址信息(物理地址) 我只需要48-2a-e3-28-b0-f5 这是最接近我需要的,但我相信有最简单的方法:将arp-g的输出存储到powershell变量中,powershell,variables,arp,Powershell,Variables,Arp,我只需要存储MAC地址信息(物理地址) 我只需要48-2a-e3-28-b0-f5 这是最接近我需要的,但我相信有最简单的方法: $macarray = @() arp -g 10.205.128.115 | Foreach{ $obj = New-Object PSObject -Property @{ #IP = ($_ -split "\s+")[1] MAC = ($_ -split "\s+")[2] } IF (!
$macarray = @()
arp -g 10.205.128.115 | Foreach{
$obj = New-Object PSObject -Property @{
#IP = ($_ -split "\s+")[1]
MAC = ($_ -split "\s+")[2]
}
IF (!($obj.MAC -eq "---" -or $obj.MAC -eq "Address" -or $obj.MAC -eq $null -or $obj.MAC -eq "ff-ff-ff-ff-ff-ff")) {$macarray += $obj}
}
$macarray
$macarray = @()
arp -g 10.205.128.115 | Foreach{
$obj = New-Object PSObject -Property @{
#IP = ($_ -split "\s+")[1]
MAC = ($_ -split "\s+")[2]
}
IF (!($obj.MAC -eq "---" -or $obj.MAC -eq "Address" -or $obj.MAC -eq $null -or $obj.MAC -eq "ff-ff-ff-ff-ff-ff")) {$macarray += $obj}
}
$macarray
这管用!但我认为这个解决方案是“稳健的”
这管用!但我认为这个解决方案是“稳健的”
我认为您最好按照建议使用
Get-CimInstance
或Get-WmiObject
,而不是尝试解析arp命令的输出:
Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration |
Where-Object { $_.IPAddress -match '\S+' } |
Select-Object @{Name = 'Internet Address'; Expression = {$_.IPAddress[0]}},
@{Name = 'Physical Address'; Expression = {$_.MACAddress}},
@{Name = 'Type'; Expression = {if ($_.DHCPEnabled) {'dynamic'} else {'static'}}},
Description
上面的输出类似于:
我认为您最好按照建议使用
Get-CimInstance
或Get-WmiObject
,而不是尝试解析arp命令的输出:
Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration |
Where-Object { $_.IPAddress -match '\S+' } |
Select-Object @{Name = 'Internet Address'; Expression = {$_.IPAddress[0]}},
@{Name = 'Physical Address'; Expression = {$_.MACAddress}},
@{Name = 'Type'; Expression = {if ($_.DHCPEnabled) {'dynamic'} else {'static'}}},
Description
上面的输出类似于:
- 您可以使用正则表达式更好地解析arp输出
- Windows 8+/Windows Server 2012+具有
cmdletGet-NetNeighbor
- 您可以使用正则表达式更好地解析arp输出
- Windows 8+/Windows Server 2012+具有
cmdletGet-NetNeighbor
这是为了在您的网络上获取计算机的MAC吗?如果是这样,您可以使用
获取CimInstance
获取所需信息。这是为了获取网络上计算机的MAC吗?如果是这样,您可以使用Get cimpinstance
获取所需信息。对于带有LAPS的远程Win10计算机,ARP是最简单的解决方案。但是,感谢您使用LAPS的远程Win10计算机是最简单的ARP解决方案。但是谢谢你
Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration |
Where-Object { $_.IPAddress -match '\S+' } |
Select-Object @{Name = 'Internet Address'; Expression = {$_.IPAddress[0]}},
@{Name = 'Physical Address'; Expression = {$_.MACAddress}},
@{Name = 'Type'; Expression = {if ($_.DHCPEnabled) {'dynamic'} else {'static'}}},
Description
Internet Address Physical Address Type Description
---------------- ---------------- ---- -----------
192.168.0.14 00:24:1D:C7:38:64 dynamic Realtek RTL8168D/8111D Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)
192.168.56.1 0A:00:27:00:00:0F static VirtualBox Host-Only Ethernet Adapter
$IP = '10.205.128.115'
# to parse arp output
$MAC= (arp -g $IP | Select-String -Pattern '(([0-9a-f]){2}-){5}([0-9a-f]){2}').Matches.Value
$MAC
# a more owerShell like approach
$MAC = (Get-NetNeighbor $IP).LinkLayerAddress
$Mac