public override CommandResult Execute(CommandResult pipeIn) { // Obtain cmdlet parameters string identity = _arguments.Get <StringArgument>("Identity").Value; // Obtain distinguishedname for group CommandResult dn = LDAPHelper.QueryLDAP( string.Format("(&(objectCategory=group)(cn={0}))", identity), new List <string>(1) { "distinguishedName" } ); string distinguishedName = dn[0]["distinguishedName"]; _results = LDAPHelper.QueryLDAP( string.Format("(memberOf={0})", distinguishedName), new List <string>(1) { "distinguishedName", "name", "objectClass", "objectGUID", "SamAccountName", "SID" } ); return(_results); }
public override CommandResult Execute(CommandResult pipeIn) { // Obtain cmdlet parameters string identity = _arguments.Get <StringArgument>("Identity").Value; string ldapFilter = _arguments.Get <StringArgument>("LDAPFilter").Value; string filter = _arguments.Get <StringArgument>("Filter").Value; string properties = _arguments.Get <StringArgument>("Properties").Value; // Determine filters bool filledIdentity = !string.IsNullOrEmpty(identity); bool filledLdapFilter = !string.IsNullOrEmpty(ldapFilter); bool filledFilter = !string.IsNullOrEmpty(filter); // Input checks if (filledIdentity && filledLdapFilter) { throw new InvalidOperationException("Specify either Identity or LDAPFilter, not both"); } if (!filledIdentity && !filledLdapFilter && !filledFilter) { throw new InvalidOperationException("Specify either Identity, Filter or LDAPFilter"); } // Build filter string filterBase = "(&(objectCategory=group){0})"; string queryFilter = string.Empty; // -Identity Administrator if (filledIdentity) { queryFilter = string.Format(filterBase, string.Format("(sAMAccountName={0})", identity)); } // -LDAPFilter "(adminCount=1)" else if (filledLdapFilter) { queryFilter = string.Format(filterBase, ldapFilter); } // -Filter * else if (filledFilter) { // TODO: allow more types of filters if (filter != "*") { throw new InvalidOperationException("Currently only * filter is supported"); } queryFilter = string.Format(filterBase, string.Empty); } // Query _results = LDAPHelper.QueryLDAP(queryFilter, new List <string>(properties.Split(','))); return(_results); }