在Windows命令行中获取接口名称、IP和MAC
我想得到一个机器上所有接口、IP和MAC地址的列表。我有相当多的机器来获取这些信息(大约600台),我不能在这些设备上使用批处理文件。我想发送命令并返回一个回音输出 我需要的所有信息都在在Windows命令行中获取接口名称、IP和MAC,windows,cmd,command-line,wmic,ipconfig,Windows,Cmd,Command Line,Wmic,Ipconfig,我想得到一个机器上所有接口、IP和MAC地址的列表。我有相当多的机器来获取这些信息(大约600台),我不能在这些设备上使用批处理文件。我想发送命令并返回一个回音输出 我需要的所有信息都在ipconfig/All中,但我不知道如何用for循环解析它。我对这个复杂的循环还是很陌生的。基本上,如果可能的话,我需要一行输出。有什么建议吗 主机名、接口1名称、IP、Mac、接口2名称、IP Mac等 编辑: 我在WMIC输出方面有点运气,但在文件中正确显示时遇到了问题。如果我运行这些 wmic compu
ipconfig/All
中,但我不知道如何用for循环解析它。我对这个复杂的循环还是很陌生的。基本上,如果可能的话,我需要一行输出。有什么建议吗
主机名、接口1名称、IP、Mac、接口2名称、IP Mac等
编辑:
我在WMIC
输出方面有点运气,但在文件中正确显示时遇到了问题。如果我运行这些
wmic computersystem get name
wmic nic where netenabled=true get netconnectionID
wmic /output:C:\wmictest.csv nicconfig where IPEnabled=True get ipaddress, macaddress /format:csv
我的输出不显示netconnectionID
。也可以将输出文件作为文本前的空行。没什么大不了的,但很奇怪。关于如何将所有信息正确地输入到文件中,有什么建议吗?下面是我的示例输出
Node,IPAddress,MACAddress
U8001674-TPL-A,{10.91.35.84;fe80::52b:9817:6bbf:dca4},F0:1F:AF:2A:5E:B5
下面是一个wmic
解决方案,结果是echo=!主机名!,!NetConID!,!IP地址!,!麦加代码>本地计算机的每个活动适配器一行(无法尝试对远程计算机运行它所需的自适应):
另一种解决方案解析来自ipconfig/ALL
的半线性输出,并给出与先前的wmic
最接近的结果,如下所示:
@ECHO OFF >NUL
@SETLOCAL enableextensions enabledelayedexpansion
set "HostName="
set "NetConID="
set "IP_Addr4="
set "IP_Addr6="
set "MAC_Addr="
for /F "tokens=1* delims=:" %%G in ('ipconfig /ALL') do (
set "foo=%%~G"
if not "!foo:Host name=!"=="!foo!" (
for %%I in (%%~H) do if not "%%~I"=="" set "HostName=%%~I"
)
if "!foo:adapter=!"=="!foo!" (
if not "!foo:Physical Address=!"=="!foo!" (
for %%I in (%%~H) do if not "%%~I"=="" set "MAC_Addr=%%~I"
)
if not "!foo:IPv4 Address=!"=="!foo!" (
for %%I in (%%~H) do if not "%%~I"=="" set "IP_Addr4=%%~I"
set "IP_Addr4=!IP_Addr4:(preferred)=!"
)
if not "!foo:local IPv6 Address=!"=="!foo!" (
for %%I in (%%~H) do (
if not "%%~I"=="" (
for /F "delims=%%" %%p in ("%%~I") Do set "IP_Addr6=%%~p"
rem set "IP_Addr6=!IP_Addr6:(preferred)=!"
)
)
)
) else (
if not "!IP_Addr6!,!IP_Addr4!"=="," (
@echo #!HostName!,!NetConID!,{"!IP_Addr4!","!IP_Addr6!"},!MAC_Addr!
)
set "MAC_Addr="
set "IP_Addr4="
set "IP_Addr6="
set "NetConID=!foo:*adapter =!"
)
)
if not "!IP_Addr6!,!IP_Addr4!"=="," (
@echo =!HostName!,!NetConID!,{"!IP_Addr4!","!IP_Addr6!"},!MAC_Addr!
)
:endlocal
@ENDLOCAL
goto :eof
我将使用:
wmic nicconfig其中“IPEnabled=True”获取ipaddress
。。。还有你想得到的东西。不需要解析输出 问:我不能在设备上使用批处理文件。我想发送该命令并返回回显输出。
我的解决方案尝试使用单个命令行。
我还使用了2个循环来更好地优化数据搜索
因此,也可以尝试以下解决方案:
@for /f "skip=2 delims=, tokens=1,2,3,4" %L in ('wmic nic where "netenabled=true" get macaddress^,index^,netconnectionid^,productname /format:csv') do @for /f "skip=2 delims={}, tokens=2" %A in ('wmic nicconfig where "index=%M" get ipaddress^,ipsubnet ^/format:csv') do @echo %L - %O - %N - %A
以for/F“tokens=1*delims=:%G in('ipconfig/all')do@echo%G%H开始查看示例。然后您可以将过于简单的@echo%G%H
替换为。请随时了解实际的成就,并询问更多信息,以防您在某些方面遇到困难。查看wmic-nicconfig/?
然后执行以下操作:wmic/node:remotePCnetname\u或\u IP/user:domain\admin/password:domain-adminpass-nicconfig其中的“DNSDomain-like”%。%获取MACAddress、IPAddress、DNSHostName/format:csv
(只是盐的味道)。这不是最终的答案,但这是你找到自己答案的途径。给一个人一条鱼,他可以吃一天;但教他使用互联网,他几周内不会打扰你。--史蒂文·赖特我在ipconfig/all上的for循环问题是如何为每一行获取不同的数据集。wmic更接近,但我不是s您知道如何组合两个查询。'wmic nic get-netconnectionID'这将为我提供接口名称,但这会为我提供所需的IP和MAC,并且只显示已启用的接口,这样就可以消除server 2008隧道垃圾。'wmic nicconfig where-IPEnabled=True get-ipaddress,macaddress'如果我可以组合这些,则会获得很多CLO我可以在excel中输入一个宏。另一个更新。所以我需要这三个命令来确定如何组合。我不介意主机名是否在每一行。wmic computersystem get name wmic nic where netenabled=true get netconnectionID wmic nicconfig where IPEnabled=true get ipaddress,macaddressPlease添加有关您的解决方案的更多详细信息,为什么您的解决方案有效?提出问题的用户做错了什么?请执行此操作以完成您的回答,这样将有助于将来有相同问题的用户。谢谢!
@for /f "skip=2 delims=, tokens=1,2,3,4" %L in ('wmic nic where "netenabled=true" get macaddress^,index^,netconnectionid^,productname /format:csv') do @for /f "skip=2 delims={}, tokens=2" %A in ('wmic nicconfig where "index=%M" get ipaddress^,ipsubnet ^/format:csv') do @echo %L - %O - %N - %A