1

我正在尝试删除过去 30 天内处于非活动状态的用户帐户。我尝试获取用户信息列表。检查了它的所有属性和字段,但找不到与上次登录时间相关的任何内容。

4

2 回答 2

0

你可以做这样的事情

public DateTime Get(string attr, string UserName)
        {

            DomainConfiguration domainConfig = new DomainConfiguration();
            using (new SPMonitoredScope("AD Properties"))
            {
                using (DirectoryEntry domain = new DirectoryEntry("LDAP://" + domainConfig.DomainName, domainConfig.UserName, domainConfig.Password))
                {
                    //DirectorySearcher searcher = new DirectorySearcher(domain, "(|(objectClass=organizationalUnit)(objectClass=container)(objectClass=builtinDomain)(objectClass=domainDNS))");
                    DirectorySearcher searcher = new DirectorySearcher(domain);
                    searcher.PageSize = 1000;
                    searcher.Filter = "(SAMAccountName='" + UserName + "')";
                    //searcher.Filter = "(|(objectCategory=group)(objectCategory=person))";
                    searcher.Filter = "(&(objectClass=user) (cn=" + UserName + "))";
                    var user = searcher.FindOne();
                    DateTime LastLogon = DateTime.FromFileTime((Int64)user.Properties["lastLogon"].Value);
                    return LastLogon;
                }
            }
        }

希望这对您有所帮助。

于 2012-12-18T12:29:21.383 回答
0

我不知道为什么它给了我一些比我预期的更旧的日期。但至少它会编译和运行。

using System.DirectoryServices.AccountManagement;

private static DateTime? GetUserIdFromDisplayName(string displayName)
    {
        // set up domain context
        using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
        {
            // find user by display name
            UserPrincipal user = UserPrincipal.FindByIdentity(ctx, displayName);


            if (user != null)
            {
                return user.LastLogon; 
            }
            else
            {
                return null;
            }
        } 
    }
于 2014-08-25T09:22:44.650 回答