PowerShell中计算机WiFi IPv4地址与CSV中IP匹配失败求助
解决方案:PowerShell匹配WiFi IP与CSV中的IP前缀
问题原因
你的CSV文件中存储的是IP前缀(如10.101),而Get-NetIPAddress获取到的是完整IPv4地址(如10.101.5.20)。之前的代码错误地用前缀去匹配完整IP,且未添加通配符,导致匹配失败。
正确实现代码
核心逻辑是:让完整IP去匹配CSV中的前缀+通配符*,以此判断IP是否属于目标前缀段。
基础版本
# 获取WiFi接口的IPv4地址 $currentIP = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias wi-fi).IPAddress # 导入IP前缀列表 $ipList = Import-Csv "C:\Windows\Temp\List.csv" # 遍历列表检查匹配 foreach ($item in $ipList) { # 用完整IP匹配前缀通配符 if ($currentIP -like "$($item.IP)*") { Write-Host "匹配成功:当前IP属于$($item.SITE)" } }
处理多IP场景
如果WiFi接口存在多个IPv4地址,遍历所有IP进行检查:
$currentIPs = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias wi-fi).IPAddress $ipList = Import-Csv "C:\Windows\Temp\List.csv" foreach ($ip in $currentIPs) { foreach ($item in $ipList) { if ($ip -like "$($item.IP)*") { Write-Host "匹配成功:$ip 属于 $($item.SITE)" } } }
关键说明
$($item.IP)*:通过字符串拼接给CSV中的IP前缀添加通配符,实现"前缀匹配任意后续字符"的效果-like运算符:PowerShell中专门用于通配符匹配的运算符,*代表任意长度的任意字符- 变量嵌套
$($item.IP):确保在字符串中正确解析对象属性,避免语法错误
内容的提问来源于stack exchange,提问作者user7532598
相关产品推荐
相关产品推荐

