Adam the Automator (한국어)
PowerShell의 널리 사용되는 용도는 AD (Active Directory Directory Services)와 함께 작동하는 것입니다. PowerShell이 AD 개체를 사용하여 시간을 절약 할 수있는 작업이 너무 많습니다. PowerShell을 사용하면 AD 그룹 구성원 및 그룹을 가져 오는 데 많은 시간이 절약됩니다.
Active Directory 그룹은 사용자 계정을 세분화하는 좋은 방법입니다. 그룹을 통해 관리자는 여러 시스템에서 리소스 액세스를 정의 할 수 있습니다.
이 문서에서는 PowerShell을 사용하여 AD 그룹 구성원을 가져오고 AD 그룹 구성원을 내보내겠습니다. 그런 다음이 정보를 사용하여 흥미로운 보고서를 생성 할 수 있습니다.
목차
전제 조건
이 문서를 따르려면 다음 요구 사항이 준비되어 있는지 확인하십시오.
- 도메인에 가입 된 Windows 10 컴퓨터에서 작업
- AD 그룹 및 사용자 계정을 읽을 수있는 사용자로 로그인했습니다.
- PowerShell Active Directory 모듈을 설치했습니다.
기본 사항 알아보기
AD 그룹 및 그룹 구성원을 쿼리하려면 Get-AdGroup
및 Get-AdGroupMember
의 두 가지 PowerShell cmdlet을 사용할 수 있습니다.
Get-ADGroup
는 도메인 컨트롤러를 쿼리하고 AD 그룹 개체를 반환합니다. Get-AdGroupMember
는 각 그룹 내부를 살펴보고 해당 그룹에있는 모든 사용자 계정, 그룹, 연락처 및 기타 개체를 반환합니다.
AD 그룹 가져 오기
PowerShell로 AD 그룹을 찾으려면 Get-ADGroup
cmdlet을 사용할 수 있습니다. 매개 변수가없는 Get-ADGroup
는 AD를 쿼리하고 Filter
매개 변수를 사용하여 도메인의 모든 그룹을 반환합니다. Filter
매개 변수는 필수입니다. 다양한 기준에 따라 반환되는 그룹을 제한하기 위해 존재합니다.
예를 들어 기준에 관계없이 모든 그룹을 찾으려면 Get-ADGroup
를 사용하고 와일드 카드 ( 별표)는 Filter
매개 변수입니다. 아래의 예를 볼 수 있습니다. 도메인에 수백 또는 수천 개가있는 경우 이러한 모든 그룹을 스크롤하는 데 시간이 걸릴 수 있습니다.
단일 그룹을 찾아야하는 경우 다음을 수행 할 수 있습니다. Identity
매개 변수를 사용합니다.
Identity
매개 변수는 모든 Active Directory PowerShell cmdlet의 공통 매개 변수입니다. 이를 통해 쿼리를 단일 AD 개체로 제한 할 수 있습니다. 예를 들어, HR이라는 그룹이 존재하는지 확인해야하는 경우 아래 명령을 실행하여 확인할 수 있습니다.
AD 그룹 구성원 가져 오기
PowerShell을 사용하여 AD 그룹의 구성원을 나열하려면 Get-ADGroupMember
cmdlet이 필요합니다. 이 cmdlet은 특정 그룹의 사용자, 그룹 및 컴퓨터 개체를 가져옵니다. 관리자 그룹의 모든 구성원을 찾아야 할 수도 있습니다. 가장 간단한 형식에서는 Identity
매개 변수를 다시 사용하여 아래와 같이 그룹 이름을 지정하면됩니다.
Get-AdGroupMember
는 사용자, 그룹 및 컴퓨터에 대한 그룹 멤버십 만 반환합니다. 연락처와 같은 다른 AD 개체는 반환하지 않습니다.
그룹 구성원 내부의 그룹 구성원 열거
알다시피 AD 그룹 사용자 계정뿐만 아니라 중첩이라고도하는 다른 그룹도 포함 할 수 있습니다. 그룹이 다른 그룹 내에 중첩되면 해당 그룹의 구성원은 상위 그룹에 할당 된 동일한 권한을 상속합니다.
기본적으로 PowerShell Get-AdGroupMember
cmdlet은 중첩 된 그룹 구성원을 반환하지 않습니다. 이를 수정하려면 Recursive
매개 변수를 사용할 수 있습니다. 예를 들어 아래와 같이 Recursive
매개 변수를 사용하여 HR 그룹 내부에 중첩 된 그룹 구성원을 찾을 수 있습니다.
한 번에 여러 그룹 / 구성원 가져 오기
한 번에 여러 그룹 또는 그룹 구성원에 대해 AD를 쿼리해야하는 경우 PowerShell foreach 루프를 사용하여 수행 할 수도 있습니다. foreach 루프는 컬렉션의 각 항목에 대해 명령 또는 코드를 실행합니다. 이 경우 해당 컬렉션은 그룹 이름 목록이됩니다.
HR, 회계 및 IT 그룹에서 모든 그룹 구성원을 찾아야 할 수도 있습니다. 이를 위해 먼저 이러한 그룹 이름의 모음 또는 배열을 만듭니다. 아래 예에서는이 컬렉션을 $groupNames
로 정의합니다. 그런 다음 해당 컬렉션의 각 이름에 대해 Get-ADGroupMember
를 실행하여 각 그룹의 이름을 Identity
매개 변수에 제공합니다.
또는
ForEach-Object
cmdlet을 사용하여 그룹을 반복 할 수 있습니다. p>
대체 자격 증명 사용
다른 많은 PowerShell cmdlet과 마찬가지로 AD 그룹 cmdlet에는 Credential
매개 변수.기본적으로 AD 그룹 cmdlet을 실행할 때마다 로그인 한 자격 증명을 사용하여 Active Directory를 쿼리합니다. 이 동작은 권한이있는 Active Directory 사용자로 로그인 한 도메인에 가입 된 컴퓨터에 있어야 함을 나타냅니다.
하지만 작업 그룹 컴퓨터를 사용하거나 다른 사용자로 AD에 인증해야하는 경우 어떻게해야합니까? 사용자? 이 경우 Credential
매개 변수를 사용할 수 있습니다. 이 매개 변수를 사용하면 인증에 사용할 사용자 이름과 비밀번호를 지정할 수 있습니다.
예를 들어 사용자 계정에 AD 작업을 수행 할 권한이 없을 수 있습니다. 추가 권한이있는 서비스 계정이 있습니다. 표준 사용자로 로그인 할 수 있지만 아래와 같이 서비스 계정으로 인증 할 수 있습니다.
Get-Credential
cmdlet은 사용자 이름 / 비밀번호를 입력하라는 메시지를 표시합니다. 신임장. 그런 다음이 자격 증명은 인증을 위해 Get-AdGroup
cmdlet에 전달됩니다.
Credential
매개 변수는 인증 자격 증명을 제공하기 위해 PowerShell에서 어디에나 있습니다. 자세한 내용은 PowerShell Get-Credential cmdlet 사용 및 모든 정보 자격 증명을 참조하세요.
Get-ADGroup을 사용하여 그룹 구성원 가져 오기?
반 직관적으로 들릴 수 있지만 Get-ADGroup
cmdlet을 사용하여 그룹 구성원을 얻을 수도 있습니다.
Get-ADGroup
는 members
라는 각 그룹의 속성을 반환합니다. 이는 그룹의 구성원 인 AD 개체의 모음입니다.
예를 들어 Get-ADGroupMember
를 사용하지 않고 해당 HR 그룹에서 그룹 구성원을 다시 찾으려면 다음을 수행 할 수 있습니다. 다음과 같이하십시오.
왜이 방법을 다른 방법보다 사용합니까? 가장 큰 차이점은 members
속성에는 사용자, 컴퓨터 및 기타 그룹뿐 아니라 모든 유형의 AD 개체가 포함되어 있다는 것입니다.
여러 그룹 내에 연락처가있을 수 있습니다. . Get-ADGroupMember
를 실행하면 해당 연락처가 표시되지 않습니다. 그러나 Get-ADGroup
에 아래에 표시된대로 해당 컬렉션을 확장하면서 해당 그룹의 모든 구성원을 반환하도록 지시하면 연락처가 표시됩니다.
특정 AD 속성 찾기
위의 기본 섹션에서는 단순히 모든 그룹과 그룹 구성원을 반환했습니다. 각 그룹 및 그룹 구성원에 대해 반환되는 정보는 각 개체 유형과 관련된 AD 특성의 하위 집합 일뿐입니다.
사용자 계정의 이메일 주소, 마지막 로그온 날짜 또는 기타 관련 AD 특성을보고 싶을 수 있습니다. ? 이렇게하려면 창의력을 발휘해야합니다.
HR 그룹의 모든 그룹 구성원을 찾을 수 있었지만 각 사용자 계정의 이메일 주소도 확인해야하나요?
결과 필터링
지금까지 모든 그룹과 그룹 구성원을 찾았지만 일상적인 작업 환경에서는이 작업을 거의 수행 할 필요가 없습니다. 각 항목의 제한된 수만 찾으면됩니다. AD 그룹 cmdlet에는이를 처리 할 수있는 몇 가지 방법이 있습니다.
필터 매개 변수
앞서 언급했듯이 두 cmdlet에는 모두 Filter
가 있습니다. 매개 변수. 이 매개 변수를 사용하면이 문서의 범위를 벗어나 다양한 방식으로 반환되는 내용을 제한 할 수 있습니다.
Filter
매개 변수를 사용하면 모든 AD로 결과를 제한 할 수 있습니다. 이름, 그룹 유형, 이메일 주소, 사용자의 마지막 로그온 등과 같은 속성입니다.
예를 들어 보안 그룹 만 찾고 싶을 수 있습니다. 이 경우 GroupCategory
속성을 지정하고 Security
그룹 만 반환되도록 조건을 설정합니다.
모든 보안 그룹을 찾으려고 할 수 있지만 도메인 로컬 그룹이 아니어야합니다. 그런 다음 도메인 로컬 그룹이 반환되지 않도록 다른 조건 (이번에는 -ne
연산자 사용)을 추가합니다.
쿼리 필터를 만드는 방법을 배우려면 PowerShell에서 Active Directory 및 LDAP 필터 학습을 확인하세요.
OU (조직 단위)별로 그룹 결과 제한
OU에 여러 그룹이 중첩되어있을 수 있습니다. 모든 그룹을 찾을 필요는 없지만 특정 OU에있는 그룹 만 찾을 수 있습니다. 이 경우 SearchBase
매개 변수를 사용할 수 있습니다.
SearchBase
매개 변수를 사용하면 OU의 고유 한 그룹 검색을 시작할 이름 (DN). 예를 들어 도메인 루트에 Locations라는 OU가있을 수 있습니다. Locations OU에는 Austin, NYC 및 Los Angeles와 같이 생성 된 각 위치 OU가 있습니다. NYC OU에있는 그룹 만 찾고 있으며 다른 그룹은 볼 수 없도록 제한해야합니다.
아래는 AD OU 구조의 예입니다.다른 그룹은 Locations OU 외부에 존재합니다.
아마도 NYC OU에만있는 모든 AD 그룹을 찾아야 할 수도 있습니다. 검색어를 제한하려면 아래와 같이 DN을 제공하는 SearchBase
매개 변수를 사용합니다. Locations OU 내의 모든 그룹이 반환됩니다.
하지만 이제는 Locations OU 아래의 모든 OU에서 모든 그룹을 찾아야합니다. Get-ADGroup
는 하위 OU가 아니라 위치 OU 자체의 그룹 만 반환합니다.
하위 OU 내의 그룹을 반환하려면 SearchScope
매개 변수. 이 매개 변수는 하위 개체도 검사한다는 점에서 Recursive
매개 변수와 유사합니다.
예를 들어 위치 OU 아래에있는 OU의 모든 그룹을 찾으려면, Subtree
또는 2
를 지정하십시오. SearchScope
에 대한이 값은 Get-ADGroup
가 모든 하위, 손자 및 하위 OU를 재귀 적으로 보도록 지시합니다.
SearchScope
매개 변수 옵션에 대한 전체 분석은 Get-ADGroup
문서를 참조하세요. p>
AD 그룹 및 구성원 내보내기
마지막으로 필요한 그룹 및 그룹 구성원을 쿼리하고 반환하는 방법을 알게되었습니다. 이 모든 정보는 PowerShell 콘솔로 전송됩니다. 하지만 이제이 정보를 CSV 파일이나 Excel 워크 시트로 가져와야합니다.
지금해야 할 일은 모든 정보를 파일로 보내는 것뿐입니다.
내보내기 CSV
광고 정보를 내보내는 데 널리 사용되는 형식 중 하나는 CSV입니다. PowerShell에는 PowerShell 출력에서 Export-Csv
라는 CSV 파일을 쉽게 만들 수있는 편리한 cmdlet이 있습니다.
이 문서에서 다루는 모든 명령에서 CSV 파일을 만들 수 있습니다. Export-Csv
에 파이핑하여 아래 예를 사용하면 Get-AdGroup
가 콘솔로 반환했을 모든 출력을 대신 CSV 파일로 리디렉션합니다.
이 편리한 cmdlet에 대한 자세한 내용은 Export-Csv : CSV 파일을 일류 시민으로 취급하는 PowerShell 방식을 참조하십시오.
Excel로 내보내기
PowerShell에는 정보를 Excel로 내보내는 기본 방법이 없습니다. 그러나 언제든지 ImportExcel이라는 무료 커뮤니티 모듈을 다운로드 할 수 있습니다. 이 모듈은 CSV와 유사한 내보내기 기능을 Excel 워크 시트로 직접 가져옵니다. PowerShell 모듈을 설치하려면 Install-Module ImportExcel -Scope CurrentUser
를 실행합니다.
CSV 파일 대신 위의 예를 사용하여 그룹을 Excel 워크 시트로 내 보내야했습니다. 아래와 같이 Export-Excel
cmdlet을 사용합니다.
ImportExcel 모듈에는 작동 할 수있는 수많은 기능이 있습니다. Excel로. 더 멋진 워크 시트가 필요한 경우 기능이있을 수 있습니다.
ImportExcel 모듈 사용에 대한 자세한 내용은이 문서를 참조하세요. 처리 할 수있는 몇 가지 일반적인 사용 사례에 대한 훌륭한 소개를 제공합니다.
결론
두 개의 PowerShell cmdlet을 사용하여 다음을 수행 할 수 있습니다. 광고 그룹과 관련된 모든 것. 이 기사는 사용 가능한 기능에 대한 소개 일뿐입니다. 여기에 수집 된 지식을 사용하고, 기사의 더 깊은 주제에 대한 링크를 따라 가며 무엇을 만들 수 있는지 확인하세요!