20

我有台词-

echo $LocalAdmins
    Administrator
    Domain-Administrator
    daemon
    SomeUser
  • 第 1-3 行应该相同,尽管可能存在域管理员不存在的情况,因此简单地计算行数无济于事,因为用户可能隐藏在第 3 行。

  • 第 4 行字符串更改,可能有超过 4 行,也可能根本没有第 4 行。

  • 我还不确定线条是否改变了它们的位置。

我需要获取 -notMatch "Administrator"、"Domain-Administrator"、"daemon" 的字符串。即,我需要此列表中的用户名。

有没有办法将多个 -notMatch 与 -and 或 () 一起使用?目前我被只使用一个 -notMatch 的代码所困扰。而且我不能使用 -Match 因为列表中可能有 2 个以上的用户。

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

2 回答 2

26

像这样?

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

-pattern接受REGEX。您可以使用|(或正则表达式运算符)添加其他单词以满足您的需要。

于 2013-08-12T09:56:42.243 回答
2

假设这$LocalAdmins是一个数组,您可以这样做:

$exclude = 'Administrator', 'Domain-Administrator', 'daemon'
$LocalAdmins | Where-Object { $exclude -notcontains $_ }
于 2013-08-12T09:56:49.990 回答