2013-08-12 34 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