我有一台带有两个 NIC 的计算机。我尝试分别查询每个 NIC 的 IP 地址以用于 BGInfo。
这文章描述如何仅查询活动网络接口的 IP 地址。它使用以下 WMI 查询
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True
但是我想通过引用网卡名称来分别查询每个 IP 地址。我尝试了以下查询,但由于无效而失败。
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE Name=""
如何使用 WMI 查询特定 NIC 的 IP 地址?可用的资源很少。
答案1
如何使用 WMI 查询特定 NIC 的 IP 地址?
您需要选择一个属性来使其具体且正确,例如:描述 MAC 地址 IP地址:
从命令行获取它并删除任何不必要的(在此示例中):
wmic nicconfig get macaddress,description|findstr /vb "Microsoft Bluetooth WAN Miniport"
- 在命令的输出中,选择已经区分哪个是以太网、哪个是 Wi-Fi 的 mac 地址(如果适用),如果不适用,请使用适合您情况的“接口”:
Description MACAddress
Realtek PCIe GBE Family Controller E1-4B-AF-9F-FE-D2
Intel(R) Dual Band Wireless-AC 3165 2C-04-0E-50-F0-E5
- 在 BGInfo 中添加符合此查询的每个 mac 地址:
IP ehernet:
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration where MACAddress='E1-4B-AF-9F-FE-D2'
IP wireless:
SELECT IPAddress FROM Win32_NetworkAdapterConfiguration where MACAddress='2C-04-0E-50-F0-E5'
- 结果:
观察:以下是此示例中删除的设备(不必要的设备):
wmic nicconfig get macaddress,description|findstr /vb "Microsoft Bluetooth WAN Miniport"
Microsoft Kernel Debug Network Adapter
Realtek PCIe GBE Family Controller
Intel(R) Dual Band Wireless-AC 3165
Microsoft Wi-Fi Direct Virtual Adapter
Bluetooth Device (Personal Area Network)
WAN Miniport (SSTP)
Microsoft Wi-Fi Direct Virtual Adapter
Apple Mobile Device Ethernet
笔记:为了便于说明,我在两个请求中使用了相同的 mac 地址,这也解释了为什么两个请求中的 ip 是相同的,而且 mac 地址也来自同一个虚假 MAC 地址生成
答案2
您可以像这样查询来获取特定网络适配器的 IP 地址:
wmic path win32_networkadapterconfiguration where "IPEnabled=True" get caption,ipaddress | find /i "ADAPTER NAME"
对于所有适配器(已启用 IP):
wmic path win32_networkadapterconfiguration where "IPEnabled=True" get caption,ipaddress