본문 바로가기
Tech/c#

C# - Active directory AccountExpirationDate

by 트리시스 2020. 4. 6.
반응형

액티브 디렉토리 관리시
계정에 대한 사용기간을 설정할 수 있습니다
처리해야할 계정 수량이 적다면
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);



이렇게 해서 코드가 완성되었습니다

반응형

'Tech > c#' 카테고리의 다른 글

c# - datagridview 마지막 행 없애기  (0) 2020.07.18
C# - datagridview row number(행 넘버)  (0) 2020.07.17
C# UserPrincipal  (0) 2020.06.27
C# Text Box Changed Event 감지  (0) 2020.03.21
C# - Postgrelsql 연동  (0) 2020.01.14

댓글