我需要能够通过IP地址找到NIC,无论是全部还是部分。所以写点:
Get-NIC-By-IP 10.10.*
可以返回:
Ethernet
我知道如何在Bash中执行此操作,但无法找到PowerShell解决方案。
答案 0 :(得分:2)
对于不支持Get-NetIPAddress
的Windows和/或PowerShell版本,您可以结合使用类Win32_NetworkAdapterConfiguration
和Win32_NetworkAdapter
的WMI查询获取必要信息:< / p>
$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
}
答案 1 :(得分:1)
通过使用以下命令,您将收到与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
Powershell for Windows 8和Server 2012(PS V3)中有许多cmdlet未包含在Windows 7的V3版本中。例如Get-NetIPAddress以及许多其他与网络相关的cmdlet。
然后再次将操作系统升级到支持的版本(如果可能的话),这可能是个好主意。