DistinguishedName
DirectoryServices.AccountManagementを使用すると、次のようなユーザーが表示されます。
CN=Adam West,OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu
これから最初のOU
値を取得する必要があります。
私は同様の解決策を見つけました:C#文字列から名前を抽出する
そして、いくつかの調整を使用して、このコードを作成しました。
string input = @"CN=Adam West,OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu";
Match m = Regex.Match(input, @"OU=([a-zA-Z\\]+)\,.*$");
Console.WriteLine(m.Groups[1].Value);
このコードはSTORE
期待どおりに返されますが、に変更Groups[1]
するGroups[0]
と、入力文字列とほぼ同じ結果が得られます。
OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu
この正規表現を変更して、の値のみを返すようにするにはどうすればよいOU
ですか?したがって、この例では、2つの一致の配列を取得します。文字列にOUが多いと、配列は長くなります。
編集: コードを(@dasblinkenlightの提案を使用して)関数に変換しました:
private static List<string> GetOUs()
{
var input = @"CN=Adam West,OU=STORE,OU=COMPANY,DC=mycompany,DC=group,DC=eu";
var mm = Regex.Matches(input, @"OU=([a-zA-Z\\]+)");
return (from Match m in mm select m.Groups[1].Value).ToList();
}
あれは正しいですか?