Lệnh một dòng trong windows để lấy địa chỉ IP của máy tính qua mạng wifi của tôi


0

Tôi có một thiết lập máy chủ windows nơi tôi muốn lấy địa chỉ ip wifi của máy chủ một cách linh hoạt.

Vấn đề là ipconfig trả về một chuỗi lớn và tập lệnh tôi đang sử dụng muốn địa chỉ ngay lập tức. Có bất kỳ lệnh để có được điều này ngay lập tức? Tôi mở ra ý tưởng về một tập lệnh .bat bên ngoài hoặc một phần mềm CLI nhỏ mà tôi có thể đặt trên máy chủ của mình để tập lệnh của tôi nói chuyện với tập lệnh đó để lấy địa chỉ IP qua mạng wifi.


4
Không có thứ gọi là địa chỉ wifi - Đó có thể là địa chỉ IP, nhưng máy chủ thường không sử dụng wifi. Tôi hơi bối rối với những gì bạn có thật không nhu cầu.
Journeyman Geek

1
Là powershell một lựa chọn cho ngôn ngữ kịch bản?
Scott Chamberlain

@ScottChamberlain Vâng, đúng vậy.
vDog

Câu trả lời:


3

Trong Powershell 2.0 trở lên:

PS C:\Users\User> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPENABLED=TRUE | Select IPAddress

IPAddress
---------
{192.168.1.100, ****::****:****:****:****}

Lưu ý rằng điều này sẽ cung cấp cho bạn tất cả các địa chỉ IP trên máy tính, có một số bộ lọc bạn có thể thực hiện để tách riêng địa chỉ IPv4.


1

Bạn cần phải có một số thông tin từ hệ thống để có được điều này để làm việc hoàn hảo. wmic sẽ cung cấp cho bạn thông tin này nếu bạn hỏi nó đúng cách.

wmic nicconfig sẽ cung cấp cho bạn thông tin về tất cả các bộ điều hợp của bạn, không may có một dòng kết thúc mà notepad không thể đọc được. Chạy wmic nicconfig > file.txt và mở file.txt trong notepad ++ - Bạn cần tìm một cột có tên "Chú thích". Trong trường hợp của tôi, nó đọc [00000000] Qualcomm Atheros AR9485 Wireless Network Adapter - bạn có thể sử dụng điều này để tìm kiếm thông tin về bộ điều hợp cụ thể đó.

Đang chạy wmic nicconfig where Caption="[00000000] Qualcomm Atheros AR9485 Wireless Network Adapter" get ipaddress sẽ xuất các giá trị của các địa chỉ IP hoặc giao diện cụ thể đó ở định dạng {"192.168.1.137", "fe80::XXXX:XXXX:XXXX:XXXX"} (Tôi chạy ngăn xếp kép). Bạn có thể chỉ cần sử dụng một cái gì đó như cắt gnu hoặc một số công cụ khác để loại bỏ các ký tự không cần thiết khỏi đầu ra.

Như đã nêu trong các bình luận, powershell có thể sẽ làm tất cả những điều này bao gồm lấy thông tin từ wmi và lấy thông tin ra


0

Bạn có thể sửa đổi dưới đây để phù hợp với nhu cầu của bạn.

@ECHO OFF
::=======================================================================
::  Author: Andrew Tsai
::  Date  : 04-15-2014
::=======================================================================
CLS
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

ECHO Retrieving MAC Addresses
FOR /F "tokens=1 delims= " %%a in ('getmac ^| findstr "\-" ^| findstr /v "00-50-56"')     do (
    SET vMAC=%%a
    SET vMAC=!vMAC:-=:!

    ECHO Retrieving Ethernet Adapter Name for !vMAC!
    %windir%\system32\wbem\wmic.exe /output:NICName.txt nic where MACAddress="!vMAC!"     get NetConnectionID
    for /F "skip=1 tokens=1 delims=" %%l in ('type "NICName.txt"') do (
        SET LAN_NAME=%%l
        REM Trim Trailing Spaces
        for /l %%m in (1,1,31) do if "!LAN_NAME:~-1!"==" " SETLAN_NAME=!LAN_NAME:~0,-1!
     )

    ECHO Retrieving IP
    FOR /F "tokens=2 delims= " %%a IN ('netsh int ipv4 show ipaddresses "!LAN_NAME!" ^| find "Parameters"') DO SET CurIP=%%a
)
FOR /F "tokens=2 delims= " %%a in ('%windir%\system32\nslookup myip.opendns.com resolver1.opendns.com ^| find "Address" ^| find ^/V "208.67.222.222"') DO SET ExtIP=%%a

ECHO.
ECHO Current LAN = !LAN_NAME!
ECHO Current MAC = !vMAC!
ECHO Current Internal IP = !CurIP!
ECHO Current External IP = !ExtIP!
ECHO.
REM SET LAN_NAME
REM SET vMAC
REM SET CurIP
REM SET ExtIP

ENDLOCAL
ENDLOCAL

:END
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.