You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell获取网卡描述与IPv4地址,排除IPv6的方法求助

解决方法

基础实现(保留网卡与对应IP数组的关联)

通过计算属性过滤IPAddress数组,只保留IPv4地址,同时维持与Description的关联:

Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true } | Select-Object Description, @{
    Name = 'IPv4Address'
    Expression = { $_.IPAddress | Where-Object { $_ -match '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$' } }
}

关键说明

  • Where-Object { $_.IPEnabled -eq $true }:过滤掉未启用IP配置的网卡,避免无效空条目。
  • 计算属性@{Name='IPv4Address';Expression={...}}:对每个网卡的IPAddress数组做筛选,用正则表达式^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$匹配标准IPv4格式,仅保留符合条件的地址。
  • 你之前用Select -Expand IPAddress会破坏网卡与IP的对应关系(展开后每个IP单独成条目,无法关联原Description),计算属性是维持关联的正确方式。

进阶:每个IPv4地址单独一行显示

如果网卡绑定多个IPv4地址,想要每个IP对应一条独立记录,用循环展开:

Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object IPEnabled | ForEach-Object {
    foreach ($ip in $_.IPAddress | Where-Object { $_ -match '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$' }) {
        [PSCustomObject]@{
            Description = $_.Description
            IPv4Address = $ip
        }
    }
}

推荐替代(PowerShell 5.1+)

Get-WmiObject已逐步被Get-CimInstance替代,后者性能更优,用法一致:

Get-CimInstance Win32_NetworkAdapterConfiguration | Where-Object IPEnabled | Select-Object Description, @{
    Name = 'IPv4Address'
    Expression = { $_.IPAddress | Where-Object { $_ -match '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$' } }
}

内容的提问来源于stack exchange,提问作者FrostyH23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:15:18