ライブラリを使用して、アプリケーションのADからユーザーを抽出しています。これは、ユーザーが抽出されているがGet-ADUser -LDAPFilter
にLDAPクエリを指定することによって行われますが、最初に私はそれがこのように有効であることを確認するLDAPクエリを検証しますGet-ADUser -LDAPFilterがSystem.Management.Automationライブラリ(C#)で間違った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;
}
事は、このメソッドに渡された間違ったLDAPクエリが受け入れられているということです通常のPowerShellではたとえば、このクエリ(&(objectClass=user)(objectCategory=person)(!BLABLABLAObject=*))
は機能しますが、もちろん戻りカウントは0
になります。かっこがばらついている場合や、Key=Value
の検索が正しく書かれていない場合は、エラーが発生します。
クエリの一部が間違っている場合(括弧と等号を考慮しない)、エラーをスローする方法はありますか?
実際の質問は実際には次のとおりです。「AD LDAPクエリが有効かどうかをどのように検証するのですか?」通常の方法はクエリを実行することであり、サーバーが有効でない場合はエラーが返されます。 –
@Bill_Stewartしかし、私は上記のクエリを実行すると、それは有効です。それは(!BLABLABLAObject = *)でエラーを出してはいけませんか? objectClassとObjectCategoryの名前が混乱しても、クエリはまだ実行されません。 – Enixf
IIRC LDAPクエリは属性が存在するかどうかを検証しません。 –