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);
        }
예제 #2
0
        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);
        }