Powershell Select-String -pattern -notMatch

20

我有皱纹 -

echo $LocalAdmins
    Administrator
    Domain-Administrator
    daemon
    SomeUser
  • 第1至3行应该是相同的,尽管存在"Domain-Administrator"不存在的情况,因此仅仅计算行数并不能帮助找到用户,因为用户可能隐藏在第三行。

  • 第4行字符串会发生变化,可能有多于四行或者根本没有第4行。

  • 我还不确定行会不会改变位置。

我需要获取不包含"Administrator","Domain-Administrator"和"daemon"的字符串列表,也就是说,我需要这个列表中的用户名。

可以使用多个-notMatch和-and或()吗?当前困扰我的问题是只能使用一个-notMatch。而且我不能使用-Match,因为该列表中可能有两个或更多用户。

$LocalAdmins | Select-String -pattern "Administrator" -notMatch
2个回答

26

像这样吗?

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

-pattern 可以接受 REGEX。您可以使用 |(或正则表达式运算符)将其他单词添加到其中以适应您的需求。


2
假设$LocalAdmins是一个数组,你可以这样做:
$exclude = 'Administrator', 'Domain-Administrator', 'daemon'
$LocalAdmins | Where-Object { $exclude -notcontains $_ }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接