CMD / Batch obtient le nom de la connexion Internet active

Oct 24 2020

Je sais comment obtenir le nom de l'interface

netsh interface show interface

Je sais aussi comment obtenir les noms de wifi

netsh wlan show profiles

Si je suis connecté à l'adaptateur Wi-Fi 2, je serai connecté à l'un des profils wlan.

Comment puis-je obtenir le même nom de profil pour une connexion LAN? Il devrait être "TP-Link 2.4 2" selon mes paramètres de connexion réseau. Mais si j'essaye

netsh lan show profiles

mais il n'y a toujours pas de nom d'Ethernet. Je me demande où cela entre dans Windows 10, car je n'ai sûrement pas tapé le nom d'Ethernet.

L'objectif ultime est d'imprimer le nom de la connexion active, donc si Ethernet 2 est actif, TP-Link 2.4 2, si le wi-fi est actif, par exemple TP-Link 2.4

Réponses

1 Hackoo Oct 26 2020 at 22:28

Essayez avec ce code Batch en utilisant l'applet de commande Get-NetAdapteravec Powershell v3


@echo off
Title Get Net Adapter Index
@for /f "tokens=1 skip=3 delims= " %%a in (
    'Powershell -C "Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' } | Select-Object -Property ifIndex"'
) Do (
    Set "Index=%%a"
)
echo NetAdapter Index = %Index%
pause

Et si vous souhaitez obtenir plus d'informations telles que Interfaceet MACAddress, vous pouvez essayer comme ce code ci-dessous:

@echo off
Title Get Net Adapter Index,InterfaceDescription,MacAddress
@for /f "tokens=1,2,3 skip=1 delims=," %%a in (
    'Powershell -C "Get-NetAdapter -Physical | Where-Object  { $_.Status -eq 'Up' } | Select-Object -Property ifIndex,InterfaceDescription,MacAddress  | ConvertTo-Csv  -NoTypeInformation"'
) Do (
    Set "Index=%%~a"
    Set "Interface=%%~b"
    Set "MacAddress=%%~c"
)
echo( Index = %Index%
echo( Interface = %Interface%
echo( MacAddress = %MacAddress%
Pause & Exit
T3RR0R Oct 24 2020 at 14:46

Je n'ai pas les moyens de tester les connexions Ethernet - je peux cependant montrer des moyens de capturer et de filtrer la sortie des commandes netsh vers des variables, ce que vous devrez faire pour votre objectif ultime.

  • For /F permet la capture de la sortie de la commande lors de son exécution
  • Marquer les variables en conjonction avec les vérifications de condition if peuvent isoler des sections de sortie d'intérêt, ou définir des variables de sortie uniquement lorsque les conditions souhaitées sont, et.
  • des boucles for / F supplémentaires peuvent être utilisées pour capturer des chaînes contenant la valeur cible de la sortie isolée
 @Echo off
  IF not "!![" == "[" SETLOCAL enabledelayedexpansion
  For /F "Tokens=2,3,4 Delims=[]" %%G in (' Set Connection[ 2^> Nul ')Do Set "Connection[%%G][%%H][%%I]="
  (
   For /F "Delims=" %%G in ('netsh wlan show interfaces') Do (
    Set "Line=%%G"
    For /F "Tokens=1* Delims=: " %%i in (' Echo/!Line!^|findstr.exe /LIC:":" 2^> nul ')Do (
     Set "%%i=%%j"
    )
    If /I "!State!" == "Connected" If not "!Profile!" == "" (
     Set "Connection[!SSID!][!Name!][!GUID!]=Connected"
     Set "State="
     Set "Profile="
  )))
   (For /F "Tokens=2,3,4 Delims=[]" %%G in (' Set Connection[ ')Do (Echo Profile:%%G Type:%%H GUID:%%I)) 2> nul || Echo/No connection active.

Exemple de sortie (une connexion, valeur GUID modifiée à partir de la sortie réelle)

Profile:T3RRY Type:Wi-Fi GUID:379552d8-1472-3b14-bf55-21eeb0c4eb1c