Powershell Select-String -pattern -notMatch

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

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

  • Изменения строки в строке 4, может быть более 4 строк или вообще не может быть строки 4.

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

Мне нужно получить строку, которая -notMatch "Администратор", "Домен-Администратор", "Демон". Т.е. мне нужны имена пользователей, которые есть в этом списке.

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

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

2 ответа

Решение

Как это?

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

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

При условии, что $LocalAdmins это массив, который вы могли бы сделать это:

$exclude = 'Administrator', 'Domain-Administrator', 'daemon'
$LocalAdmins | Where-Object { $exclude -notcontains $_ }
Другие вопросы по тегам