如果一个字符串包含另一个,如何比较来自不同数组的两个字符串?

时间:2019-11-07 13:40:16

标签: powershell

我想比较一个字符串(例如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行没有输出。我看不到我的错误。

1 个答案:

答案 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*"}
}