Mit ipconfig
kann ich die Liste der Netzwerkadapter und deren Einstellungen anzeigen, zB die IP-Adresse.
Ich suche nach einem umgekehrten Befehl, der den Namen des Netzwerkadapters für eine bestimmte IP-Adresse anzeigt.
Ich habe versucht, die Ausgabe ipconfig
mit einem Befehl wie zu filtern, ipconfig | find "192.168.2.4"
aber dann ist der Adaptername weg.
Meine Ausgabe von ipconfig
ist (der schwierige Teil scheint, dass ich hier mehrere Adressen auf einem Adapter habe):
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::xxxx:xxxx:xxxx:xxxx%11
IPv4 Address. . . . . . . . . . . : 192.168.2.4
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IPv4 Address. . . . . . . . . . . : 192.168.178.20
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.178.1
192.168.2.1
Ethernet adapter VMware Network Adapter VMnet1:
...
windows
networking
ip
batch-file
ip-address
Thomas Weller
quelle
quelle
Antworten:
Wie zeige ich den Namen eines Netzwerkadapters für eine bestimmte IP-Adresse an?
Diese Lösung ist nicht erforderlich alle externen Kommandos (
pcre2grep
,sed
usw.).Verwenden Sie die folgende Batchdatei (getname.cmd):
Verwendungszweck:
Beispiel:
Weiterführende Literatur
quelle
goto
,for
,if
, Funktionen, Makros ... was braucht man mehr? ;)Sie könnten diesen PS One Liner verwenden:
So verwenden Sie es direkt über die Befehlszeile:
oder wenn Sie es wiederverwenden möchten, fügen Sie es in ein Skript ein und machen Sie die Adresse zu einem Parameter
Bearbeiten: um einen Namen zu erhalten, wie er in Win / Ipconfig angezeigt wird:
(Die Zuordnung zu Zwischenvariablen dient nur dazu, die Lesbarkeit zu verbessern.)
quelle
$powershell
ist dies jedoch nicht definiert. Ich starte diese Befehle mitpowershell -c
der Eingabeaufforderung. Auf der PS-Befehlszeile wird auch der erste Einzeiler ausgeführt.powershell "$ip = '192.168.2.4';foreach($int in (gwmi Win32_NetworkAdapter)) {gwmi Win32_NetworkAdapterConfiguration -Filter """Index = $($int.index)""" | ? {$_.IPAddress -contains $ip} | % {$int.NetConnectionID} }"
GetRelated
was dieAssociators of
Methoden ein wenig vereinfacht .Basierend auf allem, was ich versucht habe, sollte dies funktionieren. Sie scheinen zu sagen, dass Sie diese Informationen NUR von der IP-Adresse erhalten müssen, die Sie bereits in Ihrem Beispiel angegeben haben.
INTERAKTIVES PROMPT FÜR IP-ADRESSE, UM DEN NETZWERKVERBINDUNGSNAMEN ZU ERHALTEN
(Verwenden Sie
WMIC
und einige Batch-FOR
Schleifentoken
unddelim
Parsing, um den Netzwerkverbindungsnamen für eine angegebene IP-Adresse abzurufen.)(Der Ergebniswert wird in einem Befehlsfenster und einem Meldungsfeldfenster wiedergegeben. Es handelt sich ausschließlich um ein Batch-Skript, es werden jedoch dynamisch einige VBS-Skriptfunktionen erstellt, um den Prozess für alle Benutzer zu vereinfachen.)
ALLE EINLINER
NATIVE WINDOWS NUR MIT NETSH ALLEN SCHNITTSTELLEN (ALLE IPv4-ADRESSEN)
NATIVE WINDOWS NUR MIT IPCONFIG ALL INTERFACES (ALLE IPv4-ADRESSEN)
VERWENDUNG VON PCRE2GREP (per @SalvoF)
EINZEL-IP-ADRESSE ANGEGEBEN
FINDEN SIE ALLE IP-ADRESSEN
ALLE IP-ADRESSEN FINDEN (Regex bereinigt (per @SalvoF))
Bitte beachten Sie, dass das, was
pcre2grep
ich versucht habe, per @SalvoF ist,[+1]
wie er vorgeschlagen hat, aber die Verwendung der ....FIND /V
, um die obige Zeile zu entfernen,DHCP
scheint die gewünschte Ausgabe zu erhalten, wie Sie beschrieben haben. Ich habeNETSH
eher alsIPCONFIG
auch verwendet.quelle
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
(Ich habe den Regex ein bisschen gereinigt). Ich lerne viel um diesen Ort!Um genauer zu sein, würde ich nach dem Beispiel von OP verwenden
sed
, das sich im\usr\local\wbin
Ordner dieser komprimierten Datei befindet (UnxUtils-Projekt).-n
unterdrückt nicht übereinstimmende Zeilen; Das erste Muster findet eine Zeile, die mit einem Großbuchstaben beginnt, undh
legt sie dann in den Haltebereich. Die zweite Übereinstimmung bezieht sich auf die gewünschte IP-Nummer: Zu diesem Zeitpunkt wird der Name der Zeilenhalteschnittstelle abgerufen (g
), zusätzlicher führender Text entfernt (s
) und gedruckt (p
).quelle
-B4
funktioniert fast, es bleibt mir nur das Präfix "Ethernet-Adapter", das nicht zum Adapternamen + 4 Zeilen nicht verwandter Ausgabe gehört. Aber die Botschaft ist klar: Finde ein Werkzeug, das es macht :-)ipconfig
Ausgabe anzuzeigen ? (Daten aus Datenschutzgründensed
; Vielleicht kann auch Ihre Lösung optimiert werden, um dieses Ziel zu erreichen.| sed -rn "s/^.* adapter (.*):/\1/p"
Nur zur Veranschaulichung, hier ist eine weitere Batch-Lösung, die die verzögerte Erweiterung der
%ERRORLEVEL%
Systemvariablen ausnutzt :Es kann folgendermaßen aufgerufen werden:
find_int.cmd 192.168.1.100
quelle
sed
Einzeiler bearbeitet und den Namen der Benutzeroberfläche als einzige Ausgabe belassen. Natürlich können Sie auch dafür eine einfache Batch-Datei schreiben, indem Sie die IP-Nr. als Argument (%1
).Vielen Dank für die Mühe an alle. Es scheint, dass es mehrere Hürden gibt:
All das
-Bx
und Regex-Zeug scheint leicht zu brechen, also habe ich nach etwas gegoogelt, das ich selbst implementieren könnte, und mir das folgende C # -Programm ausgedacht, das die IP-Adresse als Parameter (IP2Adapter <IP>
) verwendet:quelle
Unter Windows 10 Powershell kann dies folgendermaßen erreicht werden:
Dies ergibt ein Ergebnis wie
Wi-Fi
.Wo Sie
InterfaceAlias
jede andere Objekteigenschaft ersetzen können.Um alle Eigenschaften zu erhalten, lassen Sie einfach die Pipes weg und führen Sie Folgendes aus :
Get-NetIPAddress -IPAddress '192.168.2.4'
.Andere netzwerkadapterbezogene Eigenschaften (wie z. B. Beschreibung) können normalerweise basierend auf
InterfaceAlias
oder abgefragt werdenInterfaceIndex
, z.Welches wird so etwas geben wie :
Intel(R) Dual Band Wireless-AC 8265
.Weitere Informationen finden Sie in den Dokumenten: https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netipaddress?view=win10-ps
quelle