2016-09-13 5 views
0

У меня есть программа, которая запускает некоторые проверки объектов в активном каталоге, и одна из моих проверок - проверить, установлена ​​ли дата истечения срока годности. С объектом UserPrincipal я могу проверить дату .AccountExpirationDate, чтобы узнать, есть ли у нее один, но как бы я посмотрел на эту дату, чтобы узнать, истекает ли она в течение года?Проверка даты истечения срока действия Active Directory

Это в настоящее время, что я прокатке с

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; 
    } 
}; 

Я понимаю, что такие вещи, как в Check и AccountPoint пользовательские объекты, сделанные мной, но я надеюсь, что не помешает никому из ответа на мой вопрос ;

Как я могу проверить, если срок годности был установлен на год или менее

+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

Смежные вопросы