Windows 中的一行命令通过我的 wifi 网络获取计算机的 ip 地址

Windows 中的一行命令通过我的 wifi 网络获取计算机的 ip 地址

我有一个 Windows 服务器设置,我想动态获取服务器的 wifi IP 地址。

问题是 ipconfig 返回了一个巨大的字符串,而我使用的脚本想要立即获取地址。有什么命令可以立即获取地址吗?我愿意考虑使用外部 .bat 脚本或迷你 CLI 软件,我可以将它们放在我的服务器上,这样我的脚本就可以与该脚本对话,通过 wifi 网络获取 ip 地址。

答案1

在 Powershell 2.0 及更高版本中:

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

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

请注意,这将为您提供计算机上的所有 IP 地址,您可以进行一些过滤以仅隔离 IPv4 地址。

答案2

你需要得到一些来自系统的信息以使其完美地工作。如果您以正确的方式询问,wmic 将为您提供这些信息。

wmic nicconfig将为您提供以下信息全部您的适配器,不幸的是,它的行尾部分记事本无法读取。wmic nicconfig > file.txt在 notepad ++ 中运行并打开 file.txt - 您需要找到一个名为“Caption”的列。在我的例子中,它显示为[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 获取信息并获取信息

答案3

您可以修改以下内容以满足您的需要。

@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

答案4

ipconfig|grep -m 1 IPv4|sed "s/IPv4 Address. . . . . . . . . . . : //g"|sed 's/   //g'|clip

这是一个 .Cmd 版本,仅提供您正在寻找的地址。

GNUWin32、cygwin 和 unxutils 是 3 个软件包,它们将提供命令“grep”和“sed”

相关内容