如何使用PowerShell获取指定WLAN的网络接口信息
PowerShell获取指定WLAN对应网络接口的实现方案
核心说明
你之前使用netsh wlan show interface只能查询已连接的无线接口,是因为该命令默认只返回处于活跃连接状态的无线网卡信息,只要你的设备无线网卡未被禁用,不管当前是否连接WiFi、是否插了LAN网线,都可以通过PowerShell的内置命令拿到目标WLAN对应的接口。
1. 获取本机所有无线网卡接口(全场景适用)
使用Get-NetAdapter筛选无线类型接口即可,不管当前无线是否连接都可以返回结果:
# 过滤所有物理无线网卡接口 Get-NetAdapter | Where-Object { $_.InterfaceType -eq 71 -and $_.HardwareInterface }
参数说明:InterfaceType=71是IEEE 802.11无线接口的标准枚举值,HardwareInterface参数用于过滤掉虚拟无线网卡
如果你需要定向筛选名称带WLAN的接口,可以调整命令:
Get-NetAdapter -Name "WLAN*" | Where-Object InterfaceType -eq 71
2. 关联指定SSID的对应无线接口
如果需要查找指定名称的WLAN(比如未连接的WLAN B)对应的网卡接口,可以结合WiFi扫描/已保存配置查询:
# 替换为你要查询的目标WLAN的SSID名称 $targetSSID = "WLAN B" # 先查当前已连接过的SSID对应的接口 $matchedInterface = Get-NetConnectionProfile | Where-Object { $_.Name -eq $targetSSID -and $_.InterfaceAlias -match "WLAN" } | Select-Object -First 1 InterfaceAlias, InterfaceIndex # 未查到则扫描当前可探测的WiFi列表匹配接口 if (-not $matchedInterface) { $scanResult = netsh wlan show networks mode=bssid | Select-String "SSID\s+\d+\s+:\s+$targetSSID", "接口名称\s+:\s+(.*)" $interfaceName = $scanResult | Where-Object { $_ -match "接口名称\s+:\s+(.*)" } | ForEach-Object { $_.Matches.Groups[1].Value } | Select-Object -First 1 $matchedInterface = Get-NetAdapter -Name $interfaceName | Select-Object Name, InterfaceIndex, Status } # 输出匹配到的接口信息 $matchedInterface
注意事项
- 只插LAN网线的场景下,只要无线网卡没有被禁用,上述命令都可以正常返回结果
- 如果需要查询的目标WLAN不在当前探测范围内,只要该SSID曾经在本机保存过配置,也可以从已保存的WiFi配置列表中匹配到对应的网卡接口
- 如果执行命令没有返回结果,可以加
-IncludeHidden参数查看是否是无线网卡被隐藏/禁用:Get-NetAdapter -IncludeHidden
内容的提问来源于stack exchange,提问作者LesmoTV
相关产品推荐
相关产品推荐

