2016-09-13 49 views
0

我有一个程序对活动目录中的对象运行一些验证,我的一个检查是查看是否在一年内设置了过期日期。通过UserPrincipal对象,我可以检查.AccountExpirationDate日期以查看它是否有一个,但我如何查看该日期以确定它是否会在一年内过期?检查活动目录过期日期

这是目前我正在与

protected Check AccountExpiresMandatoryCheck = new Check() 
{ 
    ResultMessageTemplate = "User(s) don't have an expiry date or expiry date is greater than 1 year", 
    Run = delegate(Principal principal, AccountPoint point) 
    { 
     UserPrincipal user = principal as UserPrincipal; 
     if (user == null) return false; 
     return user.AccountExpirationDate != null || //check here if the date is a year or less; 
    } 
}; 

滚动我知道的东西像一个CheckAccountPoint是我做的自定义对象,但我希望这不会阻止任何人回答我的问题;

我将如何检查是否到期日设定为一年或更小

+0

您是否试图查看日期是否在当前日期的一年内,或者是否将过期日期设置为距创建日期一年? – efischency

+0

@efischency我在想第二个。 – BlueBarren

+0

我不认为你会得到你正在寻找的东西。主要是由于我猜测你的系统管理员可能会改变过期日期,并且没有跟踪所有的改变,你怎么知道最初设置的是什么? – efischency

回答

0

这很难准确的告诉你以后,但是这可能会有帮助。

DateTime oneYearAgoToday = DateTime.Today.AddYears(-1); 
return user.AccountExpirationDate != null || user.AccountExpirationDate > oneYearAgoToday; 
+0

感谢您的答案,但与今天的日期相比并不能真正帮助我看到期限的长短。如果有人去,并提高到期不到一年,所以它仍然在一年内,那么我认为这不会选择。虽然有什么比没有好,所以我会考虑它。 – BlueBarren

+0

我想为我的目的,这实际上做我想做的。一年中任何时候的用户账户都不应该超过一年。 – BlueBarren

0

您应该能够从当前日期检查的差异,看看是否过期天数少于365或针对你想要的任何参考日期。但是,你可以得到所有排序从差值和比较针对

var dateDifference = theUser.AccountExpirationDate - DateTime.Now; 
if (dateDifference != null) 
    Debug.WriteLine(dateDifference.Value.Days); 
+0

但是没有办法获得在活动目录中设置的过期日期吗? – BlueBarren

+0

好吧,如果你正在寻找,那么我认为我们不能得到那个。这是您正在查看的一种记录细节。 – Versatile

+0

问题是,从来没有登录,所以我认为我运气不好。 – BlueBarren