【问题标题】:Where-object -or not workingWhere-object - 或不工作
【发布时间】:2016-09-10 04:29:57
【问题描述】:

好的 - 所以我工作的公司已经买断了很多域名。每个域都有不同的命名模式。 (例如:john.smith、jsmith) - 当我们终止某人时,我想自动禁用他们在每个域中的帐户。

在我在 where-object cmdlet 中添加“或”语句之前,此脚本运行良好。

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

如果我取出 or 语句 - 它会找到用户。如果我放入 or 语句,它只会返回我域中的每个用户。

我也尝试避免使用 -or,并使用 if,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 语句错误 - 但为什么没有错误?

谢谢你,

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您的 Where-Object 中有一组额外的括号。你想要的东西可以用括号工作,但没有任何括号也可以工作:

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

    【讨论】:

    • 好的 - 成功了。奇怪,因为我之前看到过向 where-object 添加多个参数的双括号。我想那是不好的形式。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    相关资源
    最近更新 更多