我想比较一个字符串(例如Edi)是否包含在另一个字符串(例如Edil)中。我写了一个带字符串的脚本,因为以后我需要比较两个对象(AD中的所有用户与NTFSsecurity中的帐户(文件夹的权限))。
$AlleBenutzer = ("Adam","Edi", "Georg","Kate")
$Benutzer = ("Adaml", "Edil", "Eval")
foreach ($u in $AlleBenutzer) {$L = $u | Out-String ; write-host $L}
foreach ($v in $Benutzer) {$M = $v | Out-String; write-host $M}
foreach ($user in $L) {if ($M -match $user ) {Write-Host $M}}
我从第3行和第4行变成输出,但从第6行没有输出。我看不到我的错误。
答案 0 :(得分:1)
这里不需要Out-String
-您的数组值已经是字符串。您可以通过一组嵌套的Where-Object
管道来运行子字符串(用户名)列表,以测试它们:
$AlleBenutzer = ("Adam","Edi", "Georg","Kate")
$Benutzer = ("Adaml", "Edil", "Eval")
$AlleBenutzer |Where-Object {
$user = $_
# If any value in $Benutzer matches the user name,
# this expression will evaluate to _something_,
# iow. $true in the outer Where-Object
$Benutzer |Where-Object {$_ -like "*$user*"}
}