![Windows 中的一行命令通过我的 wifi 网络获取计算机的 ip 地址](https://linux22.com/image/1403316/Windows%20%E4%B8%AD%E7%9A%84%E4%B8%80%E8%A1%8C%E5%91%BD%E4%BB%A4%E9%80%9A%E8%BF%87%E6%88%91%E7%9A%84%20wifi%20%E7%BD%91%E7%BB%9C%E8%8E%B7%E5%8F%96%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%20ip%20%E5%9C%B0%E5%9D%80.png)
我有一个 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”