如何在PowerShell中获取已连接网络接口的唯一IPv4地址?
获取PowerShell中已连接网络接口的唯一IPv4地址
你遇到的重复条目问题,是因为Get-NetIPInterface -ConnectionState Connected会返回同一接口的多条记录(比如接口同时关联了IPv4和IPv6配置,或者存在多状态条目),导致后续遍历调用Get-NetIPAddress时重复获取了同一IP。
最简单的解决方式是在管道末尾添加Select-Object -Unique,直接去除完全重复的结果:
Get-NetIPInterface -ConnectionState Connected | ForEach-Object { Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias $_.InterfaceAlias } | Select-Object InterfaceAlias, IPAddress -Unique
如果想要更高效的写法(避免重复查询接口信息),可以先获取已连接接口的索引集合,再过滤Get-NetIPAddress的结果:
# 先获取所有已连接IPv4接口的索引 $connectedIPv4Indices = Get-NetIPInterface -ConnectionState Connected -AddressFamily IPv4 | Select-Object -ExpandProperty InterfaceIndex # 过滤出对应索引的IPv4地址并去重 Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceIndex -in $connectedIPv4Indices } | Select-Object InterfaceAlias, IPAddress -Unique | Sort-Object InterfaceAlias
这样就能得到你期望的无重复结果,同时保持接口名称排序的可读性。
内容的提问来源于stack exchange,提问作者SebMa
相关产品推荐
相关产品推荐

