Get-ADUser -LDAPFilter接受System.Management.Automation库中的错误LDAP查询(C#)

时间:2017-11-03 15:14:46

标签: c# powershell asp.net-core

我正在使用System.Management.Automation库从我的应用程序中的AD中提取用户。通过在Get-ADUser -LDAPFilter中指定LDAP查询来完成提取哪些用户,但首先我验证LDAP查询以确保其有效,如下所示:

public static bool ValidLDAPQuery(string ldapQuery)
{
    try
    {
        using (var powerShell = PowerShell.Create())
        {
            var adUsersList = powerShell
                 .AddCommand("Get-ADUser")
                 .AddParameter("LDAPFilter", ldapQuery)
                 .Invoke();
        }
    }
    catch (Exception)
    {
        return false;
    }

    return true;
}

事实是,在普通的PowerShell中接受传递给此方法的错误LDAP查询。例如,此查询(&(objectClass=user)(objectCategory=person)(!BLABLABLAObject=*))可以使用,但当然返回计数只是0。如果括号不均匀或Key=Value搜索未正确写入,则仅抛出错误。

如果查询的任何部分出错(没有考虑括号和等号),有没有办法让它抛出错误?

1 个答案:

答案 0 :(得分:0)

感谢Bill_Stewart的澄清。我只是在上面的评论中写下他作为答案的澄清,以防它被忽视。

因此,当将错误编写的LDAP查询传递给方法参数(例如(&(objectClass=user objectCategory=person)(!CriticalObject=*)时,该命令将引发错误。但是,如果指定的属性或值不存在,它将不会拒绝查询,例如(&(objectClass=user)(objectCategory=person)(!BLABLABLAObject=*)),它只会产生不结果。