У меня есть Windows Server настройки, где я хотел бы получить IP-адрес Wi-Fi сервера динамически.

Проблема в том, что ipconfig возвращает огромную строку, а скрипт, который я использую, сразу хочет получить адрес. Есть ли команда, чтобы получить это сразу? Я открыт для идеи внешнего сценария .bat или программного обеспечения mini CLI, которое я могу установить на своем сервере, чтобы мой сценарий связывался с этим сценарием, чтобы получить IP-адрес по сети Wi-Fi.

3 ответа3

3

В Powershell 2.0 и выше:

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

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

Обратите внимание, что это даст вам все IP-адреса на компьютере, и вы можете применить некоторую фильтрацию, чтобы изолировать только IPv4-адрес.

1

Вам нужно получить некоторую информацию из системы, чтобы она работала идеально. wmic предоставит вам эту информацию, если вы спросите ее правильно.

wmic nicconfig предоставит вам информацию обо всех ваших адаптерах, к сожалению, с окончанием строки, которое блокнот не может прочитать. Запустите wmic nicconfig > file.txt и откройте file.txt в notepad ++. Вам нужно найти столбец с названием "Заголовок". В моем случае на нем написано [00000000] Qualcomm Atheros AR9485 Wireless Network Adapter - вы можете использовать его для поиска информации об этом конкретном адаптере.

Запуск wmic nicconfig where Caption="[00000000] Qualcomm Atheros AR9485 Wireless Network Adapter" get ipaddress будет экспортировать значения IP-адресов или определенного интерфейса в формате {"192.168.1.137", "fe80::XXXX:XXXX:XXXX:XXXX"} (я запускаю двойной стек). Вы можете просто использовать что-то вроде gnu cut или другой инструмент, чтобы убрать ненужные символы из вывода.

Как указано в комментариях, powershell, скорее всего, сделает все это, включая получение информации от wmi и получение информации из нее.

0

Вы можете изменить ниже, чтобы соответствовать вашим потребностям.

@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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .