2013-08-12 32 views
12

我行 -Powershell的选择串-pattern -notmatch

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 

回答

16

是否这样?

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

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

+0

这也适用。谢谢! – Phoneutria

+0

@Phoneutria很高兴帮助! –

2

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

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

谢谢!它工作完美。 – Phoneutria