Powershell содержит - совпадать с частичной строкой и списком? - PullRequest
3 голосов
/ 13 марта 2020

У меня есть такая ситуация в моем сценарии:

$Excludes = "Commvault","Veeam"

$testuser = 'DOMAIN\vCommvaultConnect'
$Excludes | ForEach-Object {
    If ($testuser.Contains($_)) {
    Write-Host "Found"
    }
}

Это самый эффективный способ проверить это или есть более быстрый способ сопоставить пользователя с каждым из этих исключенных слов?

1 Ответ

1 голос
/ 13 марта 2020

Как насчет использования поисковых групп Regex

$Excludes = "Commvault","Veeam"

$SearchRegex_Excludes = ($Excludes | % { "(" + ($_) + ")" }) -join "|"
# sample regex pattern result - (Commvault)|(Veeam)

$testuser = "DOMAIN\vCommvaultConnect"

if ( $testuser -match $SearchRegex_Excludes ) { "Found" } else { "Not Found " }
...