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 $_ }