如何在PowerShell中获取活动网络接口的IP地址、前缀及网关
如何用PowerShell一次性获取活动网卡的IP、前缀和网关信息?
我尝试在PowerShell中获取活动网络接口的IPv4地址、前缀长度(子网掩码)以及默认网关信息,但找不到能一次性返回全部所需内容的命令:
尝试过的命令及输出
命令1:
PS C:\> Get-NetIPConfiguration | ? { $_.NetAdapter.Status -ne "Disconnected" } | Select InterfaceAlias, IPv4Address , PrefixLength , IPv4DefaultGateway
输出:
InterfaceAlias IPv4Address PrefixLength IPv4DefaultGateway -------------- ----------- ------------ ------------------ LAN {10.20.24.51} {MSFT_NetRoute (InstanceID = ":8:8:8:9:55?@55;:8?:8??8;55;")}
命令2:
PS C:\> Get-NetIPInterface -ConnectionState Connected -AddressFamily IPv4 | Get-NetIPAddress | Select InterfaceAlias, IPv4Address , PrefixLength , IPv4DefaultGateway
输出:
InterfaceAlias IPv4Address PrefixLength IPv4DefaultGateway -------------- ----------- ------------ ------------------ LAN 10.20.24.51 24 Loopback Pseudo-Interface 1 127.0.0.1 8
期望输出格式
InterfaceAlias IPv4Address PrefixLength IPv4DefaultGateway -------------- --------- ------------ ------------------ LAN 10.20.24.51 24 10.20.24.1 Loopback Pseudo-Interface 1 127.0.0.1 8
解决方案
使用Select-Object的计算属性,从Get-NetIPConfiguration返回的对象中提取具体的IP地址和网关值:
Get-NetIPConfiguration | Where-Object { $_.NetAdapter.Status -ne "Disconnected" -and $_.IPv4Address -ne $null } | Select-Object InterfaceAlias, @{Name='IPv4Address'; Expression={$_.IPv4Address.IPAddress}}, PrefixLength, @{Name='IPv4DefaultGateway'; Expression={$_.IPv4DefaultGateway.NextHop}}
说明:
- 原命令1中
IPv4Address是包含IP地址的对象,需提取其IPAddress属性;IPv4DefaultGateway是路由对象,需提取NextHop属性才能得到网关IP。 - 增加
$_.IPv4Address -ne $null过滤掉没有IPv4地址的接口(比如仅IPv6的接口)。 - 如果需要包含回环接口,可去掉
$_.NetAdapter.Status -ne "Disconnected"条件,因为回环接口的状态不属于常规的"Connected"或"Disconnected"。
内容的提问来源于stack exchange,提问作者SebMa
相关产品推荐
相关产品推荐

