/// <summary>
        /// Sets a single department information for all users in papercut.
        /// </summary>
        internal static void SetUsersSingleDepartmentInfo(ServerCommandProxy serverProxy, LdapUser[] ldapUsers, int targetDepartmentField)
        {
            string fieldToUpdate = PaperCutProxyWrapper.ResolveDepartmentField(targetDepartmentField);

            try
            {
                for (int i = 0; i < ldapUsers.Length; i++)
                {
                    serverProxy.SetUserProperty(ldapUsers[i].Username, fieldToUpdate, ldapUsers[i].DepartmentName);
                    Console.WriteLine("#{0}/{1} updated username: {2}, new department: {3}",
                        i + 1, ldapUsers.Length, ldapUsers[i].Username, ldapUsers[i].DepartmentName);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
            }
            Console.WriteLine("\n########################################\r\n");
        }
コード例 #2
0
        /// <summary>
        /// Retrieves the department information for users from Active Directory.
        /// </summary>
        ///
        /// <returns>
        /// A list of LdapUsers containing the usernames, full names,
        /// department names or department numbers.
        /// </returns>
        public LdapUser[] retrieveUserDepartment(PpcUser[] ppcUsers, string department)
        {
            LdapUser[] ldapUsers = new LdapUser[ppcUsers.Length];

            DirectoryEntry ldapConnection = createDirectoryEntry();
            DirectorySearcher ldapSearch = new DirectorySearcher(ldapConnection);
            string[] requiredProperties = new string[] { "cn", department};

            foreach (String property in requiredProperties)
            {
                ldapSearch.PropertiesToLoad.Add(property);
            }

            for (int i = 0; i < ldapUsers.Length; i++)
            {
                ldapUsers[i] = new LdapUser();
                ldapUsers[i].Username = ppcUsers[i].Username;
                try
                {
                    ldapSearch.Filter = "(sAMAccountName=" + ldapUsers[i].Username + ")";
                    SearchResult result = ldapSearch.FindOne();

                    if (result != null)
                    {
                        try
                        {
                            ldapUsers[i].FullName = result.Properties[requiredProperties[0]][0].ToString();
                            ldapUsers[i].DepartmentName = result.Properties[requiredProperties[1]][0].ToString();
                        }
                        catch (Exception)
                        {
                            Console.WriteLine("Incomplete AD information for user: {0}", ldapUsers[i].Username);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Nothing retrieved.");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.StackTrace);
                }
            }

            return ldapUsers;
        }