2016-05-13 153 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

好的 - 工作。奇怪,因为我已经看到了在向对象之前添加多个参数的双括号。我猜这是糟糕的形式。非常感谢。 –