Dengan ipconfig
saya dapat menunjukkan daftar adapter jaringan dan pengaturannya, misalnya alamat IP.
Saya mencari perintah sebaliknya yang menampilkan nama adaptor jaringan untuk alamat IP yang diberikan.
Saya telah mencoba memfilter keluaran ipconfig
dengan perintah seperti ipconfig | find "192.168.2.4"
tetapi kemudian nama adaptor hilang.
Output saya ipconfig
adalah (bagian yang sulit tampaknya saya memiliki beberapa alamat pada satu adaptor di sini):
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
sumber
sumber
Jawaban:
Bagaimana cara menampilkan nama adaptor jaringan untuk alamat IP yang diberikan?
Solusi ini tidak tidak memerlukan perintah eksternal (
pcre2grep
,sed
, dll).Gunakan file batch berikut (getname.cmd):
Pemakaian:
Contoh:
Bacaan lebih lanjut
sumber
goto
,for
,if
, fungsi, macro ... apa lagi yang Anda perlu? ;)Anda bisa menggunakan PS one liner ini:
Untuk menggunakannya langsung dari baris perintah:
atau jika Anda ingin menggunakannya kembali, masukkan ke dalam skrip dan buat alamat sebagai parameter
Edit: untuk mendapatkan nama seperti yang ditunjukkan di Win / Ipconfig:
(penugasan ke variabel perantara hanya untuk membuatnya sedikit lebih mudah dibaca)
sumber
$powershell
tidak terdefinisi, saya meluncurkan perintah-perintah itu denganpowershell -c
dari command prompt. Pada baris perintah PS 1st one-liner juga berjalan.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
memudahkanAssociators of
.Berdasarkan semua yang saya coba, ini seharusnya bekerja sepertinya Anda mengatakan Anda perlu mendapatkan informasi ini HANYA dari alamat IP yang sudah Anda tentukan dalam contoh Anda.
PROMPT INTERAKTIF UNTUK ALAMAT IP UNTUK MENDAPATKAN NAMA KONEKSI JARINGAN
(Gunakan
WMIC
dan beberapa betsFOR
lingkarantoken
dandelim
parsing untuk mendapatkan nama koneksi jaringan untuk alamat IP tertentu.)(Nilai hasil akan bergema ke jendela perintah dan jendela kotak pesan. Itu semua skrip batch tetapi secara dinamis membangun beberapa fungsi skrip VBS untuk menyederhanakan proses bagi siapa pun yang membutuhkan.)
SEMUA SATU-LINER
NATIVE WINDOWS HANYA DENGAN NETSH SEMUA INTERFACES (SEMUA ALAMAT IPv4)
WINDOWS NATIVE HANYA DENGAN IPCONFIG SEMUA INTERFACES (SEMUA ALAMAT IPv4)
MENGGUNAKAN PCRE2GREP (per @SalvoF)
ALAMAT IP TUNGGAL DITETAPKAN
CARI SEMUA ALAMAT IP
CARI SEMUA ALAMAT IP (Cleaned Up Regex (per @SalvoF))
Harap dicatat bahwa
pcre2grep
saya coba adalah per @SalvoF[+1]
seperti yang dia sarankan tetapi menggunakan ....FIND /V
untuk menghapus baris di atas yang mengandungDHCP
tampaknya mendapatkan output yang diinginkan seperti yang Anda jelaskan. Saya menggunakanNETSH
daripadaIPCONFIG
juga.sumber
netsh interface ip show config | pcre2grep "^[A-Z]|IP.*([0-9]{1,3}(\.|)){4}"
(Saya membersihkan regex sedikit). Saya belajar banyak di tempat ini!Untuk lebih akurat, mengikuti contoh OP, saya akan gunakan
sed
, yang dapat ditemukan di bawah\usr\local\wbin
folder file zip ini (proyek UnxUtils).-n
menekan garis yang tidak cocok; pola pertama menemukan garis yang dimulai dengan huruf kapital, laluh
menyimpannya di ruang yang ditunda; kecocokan kedua adalah pada nomor IP yang diinginkan: pada titik ini, nama antarmuka yang memegang garis dipanggil kembali (g
), teks utama tambahan dilucuti (s
), dan dicetak (p
).sumber
-B4
hampir berfungsi, itu hanya membuat saya awalan "adapter Ethernet", yang bukan milik nama adaptor + 4 baris output yang tidak terkait. Tetapi pesannya jelas: temukan alat yang melakukannya :-)ipconfig
keluaran tanpa filter ? (Mengaburkan atau mengubah data untuk privasi)sed
; mungkin solusi Anda juga dapat diubah untuk mencapai tujuan itu.| sed -rn "s/^.* adapter (.*):/\1/p"
Sebagai catatan, inilah solusi batch lain, yang mengeksploitasi ekspansi
%ERRORLEVEL%
variabel sistem yang tertunda :Ini dapat dipanggil dengan cara ini:
find_int.cmd 192.168.1.100
sumber
sed
one-liner, meninggalkan nama antarmuka sebagai output tunggal. Tentu saja, Anda dapat menulis file batch sederhana untuk itu juga, melewati IP no. sebagai argumen (%1
).Terima kasih atas upaya semua orang. Tampaknya ada beberapa rintangan:
Semua hal
-Bx
-hal dan Regex tampaknya mudah rusak, jadi saya mencari sesuatu yang bisa saya implementasikan sendiri di Google dan muncul dengan program C # berikut, yang menggunakan alamat IP sebagai parameter (IP2Adapter <IP>
):sumber
Pada Windows 10 Powershell, ini dapat dicapai dengan yang berikut:
Ini akan memberikan hasil seperti
Wi-Fi
.Di mana Anda dapat menggantikan
InterfaceAlias
properti objek lainnya.Untuk mendapatkan semua properti, hanya menghilangkan pipa, dan jalankan:
Get-NetIPAddress -IPAddress '192.168.2.4'
.Properti terkait adaptor jaringan lainnya (seperti Keterangan) biasanya dapat ditanyakan berdasarkan
InterfaceAlias
atauInterfaceIndex
, misalnya .:Yang akan memberikan sesuatu seperti:
Intel(R) Dual Band Wireless-AC 8265
.Baca lebih lanjut tentang dokumen: https://docs.microsoft.com/en-us/powershell/module/nettcpip/get-netipaddress?view=win10-ps
sumber