команда powershell для получения статуса подключения сетевого адаптера - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь найти команду Powershell, которая выдаст мне состояние подключения для всех сетевых адаптеров, для тех, где подключение равно "Нет доступа к сети", отключите и снова включите адаптер.

Сначала я необходимо получить правильный статус, я пробовал следующую команду, но она показывает только физическое соединение. Обратите внимание, что статус для всех них - «Вверх», даже если состояние «Связь» показывает «Нет доступа к сети».

Get-NetAdapter -physical

Name                      InterfaceDescription                    ifIndex Status       MacAddress
----                      --------------------                    ------- ------       ----------
Ethernet 5                Remote NDIS based Internet Sharing...#6      26 Up           XX-XX-XX-XX-X...
Ethernet 11               Remote NDIS based Internet Sharing...#7      23 Up           XX-XX-XX-XX-X...
Ethernet 10               Remote NDIS based Internet Sharing...#8      54 Up           XX-XX-XX-XX-X...
Ethernet 12               Remote NDIS based Internet Sharing...#4      17 Up           XX-XX-XX-XX-X...
Ethernet 6                Remote NDIS based Internet Sharing...#5      15 Up           XX-XX-XX-XX-X...
Ethernet 4                Remote NDIS based Internet Sharing...#3      13 Up           XX-XX-XX-XX-X...
Ethernet 9                Remote NDIS based Internet Sharin...#11      12 Up           XX-XX-XX-XX-X...
Ethernet 3                Remote NDIS based Internet Sharing...#2      10 Up           XX-XX-XX-XX-X...
Ethernet 7                Remote NDIS based Internet Sharing...#9       7 Up           XX-XX-XX-XX-X...
Ethernet                  Intel(R) Ethernet Connection (2) I21...       6 Up           XX-XX-XX-XX-X...
Ethernet 8                Remote NDIS based Internet Sharin...#10       4 Up           XX-XX-XX-XX-X...

Однако что Я пытаюсь настроить таргет на состояние Связь , как показано в разделе «Сеть»

enter image description here

Ответы [ 2 ]

2 голосов
/ 24 февраля 2020

расширяя ответ @postanote, более эффективно один раз вызвать Get-NetConnectionProfile и сохранить результаты. Я также использовал -eq вместо -match для обеспечения предсказуемых результатов. Кроме того, если отношение превышает 1: 1, результаты могут быть непредсказуемыми. Его ответ не работал на windows 10.

#get profiles and adapters
$Profiles = Get-NetConnectionProfile
$Adapters = Get-NetAdapter -Physical

#loop on adapters
$Results = $Adapters | ForEach-Object {
    #get the current adapter
    $Adapter = $PSItem
    #find the associated profiles
    $AdapterProfiles = $Profiles | where {$Adapter.ifIndex -eq $_.InterfaceIndex}

    #output the merged results by looping on the profiles
    $AdapterProfiles | 
         Select-Object @{n='Name';e={$Adapter.Name}},
                       @{n='DeviceName';e={$Adapter.DeviceName}},
                       @{n='InterfaceDescription';e={$Adapter.InterfaceDescription}},
                       @{n='Status';e={$adapter.Status}},
                       IPv4Connectivity,
                       NetworkCategory
}

#view the output in a nice interactive table
$results | Out-GridView

альтернативный вывод в виде таблицы:

$results | Format-Table

вывод:

Name  DeviceName                                     InterfaceDescription                Status IPv4Connectivity NetworkCategory
----  ----------                                     --------------------                ------ ---------------- ---------------
Wi-Fi \Device\{FC0C77D5-E521-46C9-A11D-A1E018ED8DEA} Intel(R) Dual Band Wireless-AC 7265 Up             Internet         Private
0 голосов
/ 24 февраля 2020

Используйте для этого WMI.

get-wmiobject win32_networkadapter | select netconnectionid, name, InterfaceIndex, netconnectionstatus

Посмотрите на netconnectionstatus. Вы найдете значение там. Это состояние подключения.

0

Отключено

1

Подключение

2

Подключено

3

Отключение

4

Аппаратное обеспечение отсутствует

5

Аппаратное обеспечение отключено

6

Аппаратная неисправность

7

Носитель отключен

8

Аутентификация

9

Аутентификация прошла успешно

10

Ошибка аутентификации

11

Неверный адрес

12

Требуются учетные данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...