Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将arp-g的输出存储到powershell变量中_Powershell_Variables_Arp - Fatal编程技术网

将arp-g的输出存储到powershell变量中

将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 (!

我只需要存储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 (!($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+具有
    Get-NetNeighbor
    cmdlet

  • 您可以使用正则表达式更好地解析arp输出
  • Windows 8+/Windows Server 2012+具有
    Get-NetNeighbor
    cmdlet


这是为了在您的网络上获取计算机的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