PowerShell脚本集成Get-NetConnectionProfile获取网卡别名异常求助
问题根因
- 直接调用
Get-NetConnectionProfile得到的是当前设备所有已配置网络连接的对象数组,未做匹配直接读取$NICInformation.InterfaceAlias会默认返回数组第一个对象的属性值,因此所有网卡都输出了同一个别名。 Win32_NetworkAdapterConfiguration返回的网卡对象与Get-NetConnectionProfile返回的网络连接对象未做关联映射,无法直接全局取值对应到单块网卡。
修复方案
步骤1:提前构建网卡别名映射表
通过两个对象公共的网卡索引字段建立映射,方便后续快速匹配对应网卡的自定义连接标签:
# 建立索引映射表,key为网卡索引,value为对应的自定义连接标签 $nicAliasMap = @{} Get-NetConnectionProfile | ForEach-Object { $nicAliasMap[$_.InterfaceIndex] = $_.InterfaceAlias }
步骤2:遍历网卡时匹配对应标签
遍历Win32_NetworkAdapterConfiguration返回的网卡对象时,用网卡的Index字段匹配映射表中的值,匹配不到的场景可以回退显示硬件描述避免空值:
# 原有网卡遍历逻辑调整示例,仅需替换标签取值部分即可 Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IPEnabled -eq $true } | ForEach-Object { # 匹配当前网卡的连接标签 $currentNicLabel = if ($nicAliasMap.ContainsKey($_.Index)) { $nicAliasMap[$_.Index] } else { $_.Description } # 后续逻辑直接输出$currentNicLabel即可 Write-Output $currentNicLabel }
内容的提问来源于stack exchange,提问作者Charles Waters
相关产品推荐
相关产品推荐

