2015-01-15 136 views
1

我有一些代碼,接受一個字符串,該if-or我需要檢查,如果該字符串不包含@符號之後PowerShell的字符串不包含

Foreach($user in $allUsers){ 
    if($user.DisplayName.ToLower().Contains("example.com") -or $user.DisplayName.ToLower()) { 
    } else { 
     $output3 = $externalUsers.Rows.Add($user.DisplayName) 
    } 
} 

部分。如何檢查@符號是否丟失?

+2

'.Contains()'返回一個布爾值。只需檢查'!($ user.DisplayName.ToLower()。Contains(「@」))'? – Matt 2015-01-15 18:30:35

+0

完美!如果你創建這個答案,我會接受它。 – 2015-01-15 18:32:23

回答

4

有一百萬的方式做到這一點,我可能會去以下由於可讀性:

$user.DisplayName -inotmatch "@" 

-match運營商確實在使用上的圖案左側操作數的正則表達式匹配右側。

i前綴來使其明確區分 nsensitive和not前綴否定表達

你也可以這樣做:

-not($user.DisplayName.ToLower().Contains("@")) 
or 
!$user.DisplayName.ToLower().Contains("@") 

對於簡單的通配符的文本匹配(也許你討厭正則表達式,我知道什麼?):

$user.DisplayName -notlike "*@*" 

或者,對於使用IndexOf的子字符串;

$user.DisplayName.IndexOf("@") -eq (-1)