Powershell Select-String -pattern -notMatch

У меня есть строки -

echo $LocalAdmins
    Administrator
    Domain-Administrator
    daemon
    SomeUser
  • Строка 1-3 должна быть такой же, хотя может быть ситуация, когда Домен-Администратор не существует, поэтому просто подсчет строк не будет потому что пользователь может скрыться в третьей строке.

  • Строка строки 4 изменяется, может быть больше 4 строк либо как так же как и без линии 4.

  • Я еще не уверен, что линии меняют свое положение или нет.

Мне нужно получить строку, которая является -notMatch "Administrator", "Domain-Administrator", "daemon". I.e. Мне нужны имена пользователей, которые находятся в этом списке.

Есть ли способ использовать более одного -nMatch с -and и()? В настоящее время я застрял в коде, который использует только один -natchMatch. И я не могу использовать -Match, потому что в списке могут быть 2+ пользователя.

$LocalAdmins | Select-String -pattern "Administrator" -notMatch

Ответ 1

Как это?

$LocalAdmins | select-string -Pattern 'Administrator|daemon' -NotMatch | select -expa line

-pattern принимает REGEX. Вы можете использовать оператор | (или оператор регулярных выражений), чтобы добавить другие слова в соответствии с вашими потребностями.

Ответ 2

Предполагая, что $LocalAdmins - это массив, вы можете сделать это:

$exclude = 'Administrator', 'Domain-Administrator', 'daemon'
$LocalAdmins | Where-Object { $exclude -notcontains $_ }