在powershell中获取网络接口设备名称

Gra*_*ant 5 powershell

我需要一个 powershell 2 脚本来获取每个接口的名称和设备名称,就像控制面板中的网络连接中显示的那样。

应该很容易...

$interfaces = Get-WmiObject Win32_NetworkAdapter
$interfaces | foreach {
    $friendlyname = $_ | Select-Object -ExpandProperty NetConnectionID
    $name = $_ | Select-Object -ExpandProperty Name
    "$friendlyname is $name"
}
Run Code Online (Sandbox Code Playgroud)

但是,$name 返回为“Broadcom BCM5709C NetXtreme II GigE(NDIS VBD 客户端)”,而在控制面板中显示“Broadcom BCM5709C NetXtreme II GigE(NDIS VBD 客户端)#69 ”,因为有多个卡。我在属性中的任何地方都找不到那个数字。

如何在 Windows Server 2008 r2 上的 powershell 2 中获取完全如网络连接中所示的名称和设备名称?

更新:真正奇怪的是它显示了其他类型网卡的 # 部分 - 组合卡的界面正确显示了它。我的基于 nvidia 的显示在我的桌面系统上。也许只有 Broadcom 卡?有问题的服务器是戴尔 R715,带有 4 个板载 Broadcom 网卡和一个 4 端口 Broadcom 插件卡。

在更多系统上测试(以及评论者对其系统的测试)后,它似乎是 Broadcom 驱动程序的“功能”。更新驱动程序没有任何改变。

除了Get-WmiObject Win32_NetworkAdapter还有什么方法可以同时获取系统中所有网络适配器的名称和设备名称?

Gra*_*ant 6

终于,找到了解决办法!由于它确实在注册表和设备管理器中正确显示,我们可以从相关的 Win32_PnPEntity 对象中获取它。所以代码变成了:

$interfaces = Get-WmiObject Win32_NetworkAdapter
$interfaces | foreach {
    $friendlyname = $_ | Select-Object -ExpandProperty NetConnectionID
    $name = $_.GetRelated("Win32_PnPEntity") | Select-Object -ExpandProperty Name
    "$friendlyname is $name"
}
Run Code Online (Sandbox Code Playgroud)

这与我尝试过的所有系统上的设备管理器和网络连接中的名称完美匹配。