通过IP地址查找网卡

Find NIC by IP address

我需要能够通过 IP 地址找到网卡,无论是完整的还是部分的。所以写这样的东西:

Get-NIC-By-IP 10.10.*

可以return:

Ethernet

我知道如何在 Bash 中执行此操作,但未能找到解决此问题的 PowerShell 解决方案。

通过使用以下命令,您将收到与您在 match 子句中提到的 IP 地址相匹配的每个接口。

Get-NetIPAddress | ?{ $_.AddressFamily -eq "IPv4" -and ($_.IPAddress -match "192.")} | Select-Object InterfaceAlias

在我的例子中是:

InterfaceAlias
--------------
Ethernet 2
Ethernet

当然,您可以根据需要修改输出。

旧OS的补充

您不能 运行 在旧的 Windows 浏览器上使用此脚本,因为根据 TechNet 上的此线程不包含该 cmdlet:https://social.technet.microsoft.com/Forums/office/en-US/dcc966a1-24c2-4ae4-b39d-b78df52b6aef/install-of-powershell-3-on-windows-7-seems-to-be-missing-modules?forum=winserverpowershell

There are many cmdlets in Powershell for Windows 8 and Server 2012 (PS V3) that are not included in the V3 release for Windows 7.  An example would be Get-NetIPAddress, and many other network-related cmdlets.

话又说回来,将 OS 升级到受支持的版本可能是个好主意(当然,如果可能的话)。

对于不支持 Get-NetIPAddress 的 Windows and/or PowerShell 版本,您可以结合 类 Win32_NetworkAdapterConfigurationWin32_NetworkAdapter:

$Configs = Get-WMIObject -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled='TRUE'" | Where-Object {$_.IPAddress -like "192.168.*"}
ForEach ($Config in $Configs) {
    Get-WMIObject -Class Win32_NetworkAdapter -Filter "Index=$($Config.Index)" | Select-Object NetConnectionID,Description
}