안녕하세요,
한 외국회사 한국지사의 전산을 담당하고 있는데요,
이번에 본사 감사에서 지적사항 나온 부분이
AD 서버 계정 생성/삭제, 권한부여/삭제 시 각 요소들 마다 변경 날짜를 기록하라는 부분입니다.
그래서 일단 파워쉘로 개인이 가진 모든 CN 들만 쏙 ~ 빼서 CSV 파일로 저장하려고 하는데요,
Get-ADUser -Identity USER_ID -Properties Memberof | Select Memberof 에서
(CN=XXX1, OU=YYY1, DC=ZZ, DC=local, CN=XXX2, OU=YYY2, DC=ZZ, DC=local, ............)
개인이 가진 CN 값만 쏙 ~ 빼고 싶은데 혹시 방법 아시는 분 있나요?
구글 검색해서 사람들이 알려주는 방법으로 해봤는데 잘 동작이 안 되네요 ;;
한 외국회사 한국지사의 전산을 담당하고 있는데요,
이번에 본사 감사에서 지적사항 나온 부분이
AD 서버 계정 생성/삭제, 권한부여/삭제 시 각 요소들 마다 변경 날짜를 기록하라는 부분입니다.
그래서 일단 파워쉘로 개인이 가진 모든 CN 들만 쏙 ~ 빼서 CSV 파일로 저장하려고 하는데요,
Get-ADUser -Identity USER_ID -Properties Memberof | Select Memberof 에서
(CN=XXX1, OU=YYY1, DC=ZZ, DC=local, CN=XXX2, OU=YYY2, DC=ZZ, DC=local, ............)
개인이 가진 CN 값만 쏙 ~ 빼고 싶은데 혹시 방법 아시는 분 있나요?
구글 검색해서 사람들이 알려주는 방법으로 해봤는데 잘 동작이 안 되네요 ;;
5개의 답변이 있습니다.
abc.txt에 내용을 임시 저장한 후에 다시 읽어 와서 처리하는 형태로...
Get-ADUser -Identity USER_ID -Properties Memberof | Select Memberof > abc.txt
cat abc.txt | foreach-object{ ((($_.split(",") | select-string 'CN=') -creplace 'CN=','') -creplace '\(', '') -creplace ' ','' ; }
Jinwoo Yoo | 6년 이하 전
까지만 실행했을때 어떤 결과가 나오는지 궁금하네요..?
Jinwoo Yoo | 6년 이하 전
[string[]](Get-ADUser -Identity USER_ID -Properties Memberof | Select Memberof) | foreach-object{ ((($_.split(",") | select-string 'CN=') -creplace 'CN=','') -creplace '\(', '') -creplace ' ','' ; }
Jinwoo Yoo | 6년 이하 전
[array](Get-ADUser -Identity USER_ID -Properties Memberof | Select Memberof) | foreach-object{ ((($_.split(",") | select-string 'CN=') -creplace 'CN=','') -creplace '\(', '') -creplace ' ','' ; }
split()는 기본 메소드로 보입니다.
Jinwoo Yoo | 6년 이하 전
(CN=XXX1, OU=YYY1, DC=ZZ, DC=local, CN=XXX2, OU=YYY2, DC=ZZ, DC=local, ............) 와 같은 형식으로 출력될 경우에 CN=에 해당하는 값만을 추출하는 내용을 한번 만들어 봤네요~
Get-ADUser -Identity USER_ID -Properties Memberof | Select Memberof | foreach-object{ ((($_.split(",") | select-string 'CN=') -creplace 'CN=','') -creplace '\(', '') -creplace ' ','' ; }
앞부분 Get-ADUser -Identity USER_ID -Properties Memberof | Select Memberof 명령 까지는 설명하지 않아도 될 것 같고...
foreach-object{ $_.split(",") ; } 은 "|" 앞부분의 결과가 여러 Line일 경우에 각 Line 별로 나눠서 실행하면서 각 Line 내의 내용을 ","를 기준으로 칼럼을 분해하고요.
select-string 'CN=' 는 "|" 앞의 결과들 중에서 'CN=' 이 포함한 항목만을 추출하고요.
-creplace 'CN=','' 에 의해 'CN=' 에 해당하는 문자열을 제거하고요.
-creplace '\(', '' 는 문자열 중에 "("가 붙어 있을 경우에 제거하기 위해 넣었고요. "(" 는 특수 문자로 사용되기 때문에 Escape (\) 처리해서 특수성을 제거하여 일반 "("로 처리한 것이고요.
-creplace ' ','' 는 문자열 중에 빈칸이 남아 있을 경우에 빈칸을 없애기 위해 넣었고요.
결과가 한줄로 구성되어도 상관없고, 여러 줄이 나와도 CN= 다음에 있는 값들만 모두 추출해주게 될겁니다.
Jinwoo Yoo | 6년 이하 전