Powershell определит активный сетевой адаптер и его MAC - PullRequest
0 голосов
/ 10 апреля 2019

В Linux я могу определить активный адаптер Eth, используя команду «ip route»:

vasyl@retail-z3-1:~$ ip route get 8.8.8.8
8.8.8.8 via 10.186.0.1 dev ens4  src 1.1.1.1

Есть ли способ определить, какое имя адаптера (и его MAC) используется для подключения к Интернету в PS? Возможно get-netadapter или что-то подобное.

PS Сейчас я использую этот код для извлечения MAC-адреса из известного адаптера:

$CurrMac = get-netadapter | Where {$_.name -Match "Ethernet 2"}
$CurrMacaddr = $CurrMac.MacAddress.Replace("-", "")

И нужно автоматически определить интернет-адаптер.

UPD1 Предположим, что у меня есть хост с 2 или более адаптерами Eth. Один используется для интернета, остальные - для внутренней сети или неактивны.

1 Ответ

0 голосов
/ 10 апреля 2019

Что-то вроде?

$adapters = Get-NetAdapter

foreach ($adapter in  $adapters){
    if($adapter.Status -eq "Up" -and $adapter.Name.Contains("Ethernet")){
    Write-Host $adapter.MacAddress 
    }
}

Но все же вы можете получить больше MAC-адресов ..

Или используя Get-NetRoute -DestinationPrefix '0.0.0.0/0' | Get-NetAdapter Тогда

$activeMAC= Get-NetRoute -DestinationPrefix '0.0.0.0/0' | Get-NetAdapter
Write-Host $activeMAC.MacAddress

Это должно вернуть только 1 MAC

...