在这里用头撞墙,我确信这是超级简单的事情。我正在尝试比较计算机的ipv4 wifi地址,如果它与导入的CSV中的IP匹配,请执行操作。
如果我手动输入一个IP进行比较,它工作正常,并返回一个匹配。
$IP = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias wi-fi).IPAddress
$CSV = Import-Csv "C:\Windows\Temp\List.csv"
foreach ($CPU in $CSV){
if ($CPU.IP -like "10.101*"){write-host "match found"}
}
字符串
如果我尝试与CSV中的数据进行比较,它不匹配。
$IP = (Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias wi-fi).IPAddress
$CSV = Import-Csv "C:\Windows\Temp\List.csv"
foreach ($CPU in $CSV){
if ($CPU.IP -like $IP){write-host "match found"}
}
型
CSV的内容如下
| IP| IP |
| --| ------------ |
| 10.101| 10.101 |
| 10.102| 10.102 |
我已经尝试了匹配的每一个变化,喜欢,包含等...我尝试在Get-NetIPAddress的开头使用[STRING]....
看起来当我使用-像$IP它真的想要-像$IP* 与通配符,但我不知道如何让它工作。
3条答案
按热度按时间mwyxok5s1#
我能够让它工作与以下…
字符串
我不知道还能加个通配符。感谢Reddit上的紫猴子!
zbdgwd5y2#
PowerShell中的-like运算符期望在您要比较的模式中使用通配符(*),这是正确的。
因此,如果你想找到一个以$IP开头的IP地址,你需要在它后面加上一个 *,这可以使用字符串连接来完成:
字符串
如果$CPU.IP以与$IP相同的字符串开始,则现在应该匹配。
但要注意-like不区分大小写。如果你想要区分大小写的匹配,使用-clike。
如果这仍然不起作用,请确保$IP确实包含您期望它包含的值。
如果你想比较$CPU.IP是否在任何地方包含$IP(不仅仅是在开头),你应该在$IP的两边使用 *:
型
如果$CPU.IP中的任何地方都包含字符串$IP,则匹配。
ct2axkht3#
首先,您将IPv4地址的第一个数字隔离为第二个数字。在我的例子中是“192.168”
字符串
接下来,您将在CSV文件中找到$IPMatchKey的网站。在我的例子中,它返回“HomeSite”
型
CSV文件是这个...
型
就这样