假设我们有2个.txt文件,如此:
users.txt
user.name1
user.name2
admin.name1
admin.name2
shares.txt
\\someserver\somefolder\user.name1
\\someserver\somefolder\user.name2
\\someserver\someotherfolder\admin.name1
\\someotherserver\somefolder\admin.name2
\\someplaceelse\somefolder\no.name
我想比较这两个数据点,只显示" shares.txt"中的行。匹配" users.txt"中的名称。我想我们需要使用某种wildcardsearch,因为用户名总是包含在uncpath中但不会完全相同,这里是我迄今为止尝试过的一个例子没有成功
$users = Get-Content ".\users.txt"
$shares = Get-Content ".\shares.txt"
foreach ($line in $users)
{
if ("*$line*" -like "$shares")
}
Write-Host "this line matches $line"
}
}
答案 0 :(得分:1)
foreach ($line in $users)
{
if ($shares -like "*$line*")
{
Write-Host "$($shares | where {$_ -like "*$line*"}) this line matches $line"
}
}
要获取预期信息,必须在搜索中包含循环的当前值。
您的代码中的问题是,类似操作符只允许表达式右侧的通配符。所以匹配必须以相反的方式发生。