Как сравнить две строки из разных массивов, если одна строка содержит другую? - PullRequest
0 голосов
/ 07 ноября 2019

Я хочу сравнить, если одна строка (например, Edi) содержится в другой строке (например, Edil). Я написал скрипт с out-string, потому что позже мне нужно сравнить два объекта (все пользователи из 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 Ответ

1 голос
/ 07 ноября 2019

Вам не нужно 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*"}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...