2016-05-13 149 views
1

好吧 - 所以我工作的公司買了不少的域名。每個域都有不同的命名模式。 (例如:john.smith,jsmith) - 當我們終止某人時,我想在每個域中自動禁用他們的賬戶。Where-object-or not working

此腳本工作得很好,直到我在where-object cmdlet中添加'或'語句。

$user1 = "John.smith" 
$user2 = "Jsmith" 
get-aduser -Filter * | Where-Object {{$_.samaccountname -eq "$User1"} -or {$_.samaccountname -eq "$user2"}} 

如果我拿出或語句 - 它找到用戶。如果我放入或聲明,它只會返回我的域中的每個用戶。

我也試着避免-or,並用如果else語句去:

$user1 = "john.smith" 
$user2 = "jsmith" 
$result = Get-ADUser -filter * | Where-Object {$_.samaccountname -eq "$user1"} 
if($result = $error) {Get-ADUser -Filter * | Where-Object {$_.samaccountname -eq "$user2"}} 

這不會返回一個錯誤 - 它只是不返回任何東西(可能會做的if語句錯誤 - 但爲什麼沒有錯誤

謝謝

回答

1

你有一組額外的位置對象括號裏面的,你所追求的將與括號工作是什麼,但它會工作得的。同樣沒有:

get-aduser -Filter * | Where-Object {$_.samaccountname -eq "$User1" -or $_.samaccountname -eq "$user2"} 
+0

好的 - 工作。奇怪,因爲我已經看到了在向對象之前添加多個參數的雙括號。我猜這是糟糕的形式。非常感謝。 –