C# - Active directory AccountExpirationDate
액티브 디렉토리 관리시
계정에 대한 사용기간을 설정할 수 있습니다
처리해야할 계정 수량이 적다면
AD에서 하나씩 처리해야하지만
수량이 많다면 위에 처럼 할 수 없겠죠
배치스크립트나 또는 파워셀로 하는 방법도 있지만
C#으로 주로 개발하여 사용하는 저는
하나 개발해서 리스트 파일만 만들어서
간편하게 사용하려고 계획했습니다
먼저 관련 코드입니다
PrincipalContext principalContext = GetPrincipalContext();
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, userName);
if (userPrincipal.AccountExpirationDate.HasValue)
{
expiration = userPrincipal.AccountExpirationDate.Value;
}
userPrincipal.AccountExpirationDate = new DateTime(yyyy,m,dd);
userPrincipal.save();
DateTime부분에 값을 지정하여 사용하면
기간이 설정됩니다
다만 기간설정이 변화가 많겠죠
윈폼이면 DateTimePicker를 사용해서
날짜를 설정하여 값을 받을 수 있습니다
바로 DateTime(yyyy,m,dd); 이 코드에
값을 넣으면 당연히 에러 발생합니다
형변환을 해서 값을 넣어봅시다
DateTime changeTime = Convert.ToDateTime(this.datetimepicker1.Value);
먼저 선택된 datetimepicker 값을 DateTime으로
형변환 합니다
두 번째 위 코드중에
userPrincipal.AccountExpirationDate = new DateTime(yyyy,m,dd);
New DateTime()에 들어갈 값은 long타입입니다
그래서 long 타입으로 추가로 변경합니다
DateTime changeTime = Convert.ToDateTime(this.datetimepicker1.Value);
long expTime = Convet.ToInt64(changeTime.Ticks);
이렇게 해서 기간설정값을 만들었습니다
최종 코드를 확인해보죠
PrincipalContext principalContext = GetPrincipalContext();
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, userName);
if (userPrincipal.AccountExpirationDate.HasValue)
{
expiration = userPrincipal.AccountExpirationDate.Value;
}
DateTime changeTime = Convert.ToDateTime(this.datetimepicker1.Value);
long expTime = Convet.ToInt64(changeTime.Ticks);
userPrincipal.AccountExpirationDate = new DateTime(expTime);
이렇게 해서 코드가 완성되었습니다