광고그룹의 사용자 목록을 업로드합니다. Active Directory에서 비활성 사용자 찾기

Microsoft가 PowerShell의 첫 번째 버전 이후 이를 주요 Windows 관리 도구로 만들려고 노력해 왔다는 것은 비밀이 아닙니다. 그리고 여러 가지 방법으로 효과가 있습니다! 오늘은 간단한 예를 사용하여 Active Directory 사용자 및 해당 특성에 대한 다양한 정보를 얻는 데 사용할 수 있는 PowerShell 기능을 보여 드리겠습니다.

메모. 이전에는 AD 사용자 계정의 속성에 대한 정보를 얻으려면 ADUC 콘솔(포함), 유틸리티 등 다양한 도구를 사용해야 했습니다. 도구 선택은 일반적으로 현재 수행 중인 작업과 관리자의 프로그래밍 능력에 따라 결정되었습니다.

PowerShell 2.0에는 Active Directory 작업을 위한 특수 모듈(Windows Server 2008 R2에 도입됨)이 도입되었습니다. 이 모듈의 cmdlet을 사용하면 AD 디렉터리 개체에 대해 다양한 조작을 수행할 수 있습니다. cmdlet은 Active Directory 도메인 사용자 및 해당 속성에 대한 정보를 얻는 데 사용됩니다. Get-ADUser. Get-ADUser cmdlet을 사용하여 AD에 있는 기존 사용자 계정의 모든 특성 값을 가져올 수 있습니다. 또한 다양한 선택 기준을 지정하고 도메인 사용자 및 해당 속성 목록을 생성할 수 있습니다.

이 예에서는 PowerShell Get-ADUser cmdlet을 사용하여 사용자의 암호가 마지막으로 변경된 시기와 만료되는 시기에 대한 정보를 검색하는 방법을 보여줍니다.

관리자 권한으로 Powershll 창을 실행하고 다음 명령을 사용하여 Active Directory 모듈을 가져옵니다.

가져오기 모듈 활성 디렉터리

조언. Windows Server 2012 이상에서는 PowerShell Active Directory 모듈이 기본적으로 활성화되어 있으므로 이 항목을 건너뛸 수 있습니다.

클라이언트 운영 체제(예: Windows 10)에서 Get-AdUser 명령이 작동하려면 적절한 RSAT 버전을 설치하고 제어판에서 구성 요소를 활성화해야 합니다. Windows PowerShell용 Active Directory 모듈(원격 서버 관리 도구 -> 역할 관리 도구 -> AD DS 및 AD LDS 도구 -> AD DS 도구).

모든 Get-ADUser cmdlet 인수의 전체 목록은 다음과 같이 얻을 수 있습니다.

Get-ADUser 도움말

모든 도메인 계정 목록을 표시하려면 다음 명령을 실행합니다.

Get-ADUser -필터 *

반환된 목록의 형식은 사용하기 매우 편리하지 않으며 사용자 계정의 120개 이상의 특성 및 속성 중 일부 기본 10개만 표시됩니다(DN, SamAccountName, Name, UPN 등). 마지막 비밀번호 변경 시간에 대한 정보가 없습니다.

사용자 tuser의 사용 가능한 모든 속성에 대한 전체 정보를 표시하려면 다음 명령을 실행하십시오.

Get-ADUser -identity tuser -properties *

따라서 사용자 계정과 관련된 AD 사용자 속성 및 해당 값의 전체 목록이 표시됩니다. 다음으로 필요한 필드가 표시되도록 Get-ADUser cmdlet의 출력 형식을 지정하겠습니다. 우리는 다음과 같은 속성에 관심이 있습니다.

  • 비밀번호가 만료되었습니다
  • 비밀번호 마지막 설정
  • 비밀번호는 만료되지 않습니다.

다음 명령을 실행해 보겠습니다.

Get-ADUser tuser -속성 PasswordExpired, PasswordLastSet, PasswordNeverExpires

이제 사용자 데이터에는 비밀번호 변경 날짜와 만료 시간에 대한 정보가 포함됩니다. 보다 편리한 표 형식으로 정보를 제시해 보겠습니다.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires

특정 OU의 사용자 데이터를 표시하려면 매개변수를 사용합니다. 검색베이스:

Get-ADUser -SearchBase 'OU=Moscow,DC=winitpro,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires

명령 결과를 텍스트 파일로 내보낼 수 있습니다.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

또는 향후 편리하게 Excel로 내보낼 수 있는 CSV 형식입니다(추가로 다음을 사용). 정렬 개체 PasswordLastSet 열을 기준으로 테이블을 정렬하고 조건도 추가해 보겠습니다. 어디– 사용자 이름에는 "Dmitry"라는 문자열이 포함되어야 합니다):

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where ($_.name –like “*Dmitry*”) | 정렬 개체 PasswordLastSet | 선택 개체 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires | 내보내기-csv -경로 c:\temp\user-password-expires-2015.csv

따라서 필요한 Active Directory 사용자 속성을 사용하여 테이블을 작성할 수 있습니다.

특정 특성을 기반으로 AD 사용자 계정 목록을 얻으려면 –Filter 매개 변수를 사용합니다. 이 매개 변수에 대한 인수로 특정 Active Directory 사용자 특성의 값을 지정할 수 있습니다. 그러면 Get-ADUser cmdlet이 필터 기준과 일치하는 사용자에게 적용됩니다.

이름이 Roman으로 시작하는 AD 사용자의 출력:

Get-ADUser -필터(이름 -예: "Roman*")

Get-ADUser -Filter(SamAccountName -like "*") | 측정 개체

AD의 모든 활성(차단되지 않은) 계정 목록:

Get-ADUser -Filter(활성화 -eq "True") | 선택 개체 SamAccountName,Name,Surname,GivenName | 형식-테이블

비밀번호가 만료된 계정 목록:

Get-ADUser -필터(활성화 -eq $True) -properties 비밀번호 만료됨 | 여기서($_.비밀번호가 만료됨)

이메일 주소가 있는 활성 계정 목록:

Get-ADUser -필터((mail -ne "null") -및 (활성화 -eq "true")) -속성 성,GivenName,mail | 선택 개체 이름, 성, 주어진 이름, 메일 | 형식-테이블

작업: 텍스트 파일(한 줄에 하나의 계정)에 저장된 계정 목록의 경우 AD에서 사용자의 전화번호를 가져와 해당 정보를 텍스트 csv 파일(Esxel로 쉽게 가져올 수 있음)에 업로드해야 합니다.

가져오기-Csv c:\ps\usernsme_list.csv | ForEach( Get-ADUser -identity $_.user -속성 이름, TelephoneNumber | 이름 선택, TelephoneNumber | 내보내기-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 )

다음 예에서는 기업 주소록을 나중에 Outlook 또는 Mozilla Thunderbird로 가져올 수 있는 csv 파일로 다운로드할 수 있습니다.

Get-ADUser -필터((mail -ne "null") -및 (활성화 -eq "true")) -속성 성,GivenName,mail | 선택 개체 이름, 성, 주어진 이름, 메일 | 내보내기-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv

지난 90일 동안 비밀번호를 변경하지 않은 사용자:

$90_Days = (Get-Date).adddays(-90) Get-ADUser -filter ((passwordlastset -le $90_days))

$user = Get-ADUser winadmin -속성 ThumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -인코딩 바이트

사용자 계정이 속한 그룹 목록

Get-AdUser winadmin -Properties memberof | 멤버 선택 -expandproperty 멤버

오늘은 모든 사용자 목록을 Active Directory에서 별도의 파일로 다운로드해 보겠습니다. 이 문제에 대한 우리의 주요 조수는 PowerShell입니다. 문제는 Microsoft가 처음에 Windows 서버 구성 요소를 관리하기 위한 기본 도구로 PowerShell 명령 콘솔을 계획했다는 것입니다. 그리고 오늘날 우리가 이미 버전 2.0을 가지고 있다면 대체로 그렇습니다.

최근에도 AD와 어떻게든 상호 작용하려면 관리자는 dsquery 유틸리티나 다양한 종류의 스크립트 또는 유틸리티를 마음대로 사용할 수 있어야 했습니다. 이제 Windows Server 2008 R2부터 PowerShell을 통해 AD 작업을 수행할 수 있습니다. PowerShell 2.0의 출현으로 Active Directory와 상호 작용하는 데 특수 모듈이 사용됩니다. Windows PowerShell용 Active Directory 모듈, 여기에는 필요한 cmdlet 목록이 포함되어 있습니다. 작업을 위해 다음 명령을 사용합니다. Get-ADUser.

따라서 PowerShell 콘솔을 실행할 운영 체제에 따라 "준비 단계"를 수행해야 합니다.

1) Windows Server에서 작업하는 경우 2012 버전까지, 그런 다음 다음 명령을 실행해야 합니다.

  • 가져오기 모듈 활성 디렉터리 – 모듈을 AD로 가져오는 명령

2012 이상의 운영 체제 버전에서는 이 모듈이 이미 기본적으로 활성화되어 있습니다.

2) 클라이언트 Windows에서 작업하는 경우 Windows PowerShell용 Active Directory 모듈 구성 요소와 함께 RSAT 원격 관리 패키지를 설치해야 합니다.

Get-ADUser cmdlet은 업로드되는 데이터의 양이 최대 1000명의 사용자일 때 실행하는 것이 좋습니다.

PowerShell을 사용하여 AD 사용자를 별도의 파일로 내보내기

먼저 Get-ADUser 명령에 대한 도움말을 호출해 보겠습니다. 결과적으로 추가 관리에 필요한 모든 명령을 받게 됩니다.

  • Get-ADUser 도움말 – 도움을 요청하는 명령

PowerShell 창에서 모든 속성을 가진 모든 사용자 목록을 얻으려면 다음 명령을 실행해야 합니다.

  • Get-ADUser -필터 * – AD 사용자 목록 내보내기

이 업로드는 완전한 정보를 제공하지 않으며 창에 필요한 모든 정보를 표시하지 않습니다. 따라서 검색 범위를 좁히고 user1이라는 특정 사용자의 속성을 표시해 보겠습니다.

  • Get-ADUser -identity user1 -properties * – 특정 사용자의 속성 내보내기

이제 속성이 포함된 모든 사용자 목록을 외부로 내보내 보겠습니다. txt 또는 csv파일:

  • Get-ADUser -filter * -properties * | 내보내기-csv -경로 c:\users.csv -유니코드 인코딩 – 사용자를 별도의 파일로 내보내기

핵심에 특히 주목하고 싶습니다. - 유니코드 인코딩. 이는 AD에서 내보낸 후 러시아 키릴 문자가 업로드된 파일에 올바르게 표시될 수 있도록 하는 역할을 합니다. 예를 들어 Microsoft Excel을 사용하면 러시아어 문자 대신 물음표가 표시됩니다.

파일을 볼 때 데이터는 한 줄로 내보내지므로 읽을 수 없습니다. 이를 변경하려면 다음을 수행해야 합니다.

ITGC(MS Active Directory)에서 모든 사용자를 언로드하기 위한 스크립트

이반 피스쿠노프

표준 감사 절차 중 하나 ITGC 카탈로그용 액티브 디렉토리 모든 도메인 사용자를 다운로드하는 것입니다. 획득한 데이터를 기반으로 관리자 목록을 조사하거나 만료된 비밀번호를 사용하는 사용자를 식별하는 등의 테스트 절차가 형성됩니다. 이러한 업로드를 생성하는 가장 효과적인 방법은 표준 인터페이스를 사용하는 것입니다. 파워셸 , 이 기사에서 고려할 예

1. PowerShell 스크립트를 사용하여 빠른 업로드

다음은 Excel에서 문제 없이 열 수 있는 CSV 형식으로 모든 AD 도메인 사용자 목록을 가져오는 가장 간단하고 빠른 방법 중 하나인 PowerShell 스크립트입니다.

$objSearcher = 새 개체 System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=ru" $objSearcher.Filter = "(&(objectCategory=사람) (!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # 계정 수 $users.Count $users | ForEach-Object ( $user = $_.Properties New-Object PsObject -Property @( Position = $user.description Department = $user.department Login = $user.userprincipalname Phone = $user.telephonenumber Room = $user.physicaldeliveryofficename Full 이름 = $user.cn ) ) | 내보내기-Csv -NoClobber -utf8 인코딩 -경로 C: 목록_도메인_사용자.csv

스크립트가 시스템에서 작동하려면 스크립트를 약간 수정해야 합니다. 즉, 필요한 매개변수를 입력해야 합니다. 이 예에서는 다음과 같은 매개변수가 있습니다. 사용자 부서에서 부서 도메인에서 Test.ru. 또한 파일이 저장되는 경로도 표시합니다. 목록_도메인_사용자.csv

짐을 내린 후 바로 개봉하면 목록_도메인_사용자.csv , 읽을 수 없게 보이지만 표준 수단을 사용하면 필요한 형식으로 쉽게 가져올 수 있습니다. 엑셀에서 열기 목록_도메인_사용자.csv , 첫 번째 열을 선택한 다음 "데이터" 탭으로 이동하여 "열별 텍스트"를 클릭하세요. "구분됨"을 선택하고 "다음"을 클릭하세요. 준비가 된!

!주의할 점이 스크립트는 1000명 이상의 사용자를 표시하지 않습니다. 소규모 회사에는 매우 적합하지만 도메인에 엄청난 수의 사용자가 있는 경우 아래 설명된 방법을 사용해야 합니다.

2. Active Directory 사용자 업로드를 가져오기 위한 고급 PowerShell cmdlet

Windows PowerShell용 Active Directory 모듈 도구(Windows Server 2008 R2 이상에 도입됨)를 사용하면 AD 디렉터리 개체에 대해 다양한 조작을 수행하는 cmdlet을 만들 수 있습니다. cmdlet은 사용자 및 해당 속성에 대한 정보를 얻는 데 사용됩니다. Get-ADUser.

시작한다 Powershell 창 실행 관리자 권한으로 추가 작업을 위해 Active Directory 모듈을 가져옵니다.
가져오기 모듈 활성 디렉터리

에게 모든 도메인 계정 나열 다음 명령을 실행해 보겠습니다.

Get-ADUser -필터 *

에게 사용 가능한 모든 속성에 대한 전체 정보 표시 사용자 tuser, 다음 명령을 실행하세요

Get-ADUser -identity tuser -properties *


예를 들어, 우리는 다음에 관한 정보에 관심이 있습니다. 비밀번호 변경 날짜 및 만료 시간 . 명령 결과를 텍스트 파일로 내보낼 수 있습니다.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:tempusers.txt

아니면 바로 CSV로 업로드 , 나중에 Excel로 내보내는 것이 편리할 것입니다. 또한 sort-object를 사용하여 PasswordLastSet 열을 기준으로 테이블을 정렬하고 where 조건도 추가합니다. 사용자 이름에는 "Dmitry" 문자열이 포함되어야 합니다.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where ($_.name –like “*Dmitry*”) | 정렬 개체 PasswordLastSet | 선택 개체 이름, PasswordExpired, PasswordLastSet, PasswordNeverExpires | 내보내기-csv -경로 c:tempuser-password-expires-2015.csv

디렉터리 개체를 생성, 수정 및 삭제하는 데 사용됩니다. 사용자는 다음 명령을 사용할 수도 있습니다. 식별스키마를 확장하려면 Active Directory 사용자 및 그룹 정보를 다른 응용 프로그램이나 서비스로 내보내고 ADAM(Active Directory Application Mode) 서비스를 다른 디렉터리 서비스의 데이터로 채웁니다.

통사론

식별 [-나] [-에프 파일 이름] [-에스 서버 이름] [-씨 라인1 라인2] [-V] [-제이 ] [-티 포트 번호] [-디 DN_베이스] [-아르 자형 필터_LDAP] [-피 지역] [-엘 LDAP_속성_목록] [-영형 LDAP_속성_목록] [-g] [-중] [-N] [-케이] [-ㅏ ] [-비 ] [-? ]

옵션

-나 가져오기 모드를 지정합니다. 매개변수가 정의되지 않은 경우 기본적으로 내보내기 모드가 사용됩니다. -에프파일 이름 가져오기 또는 내보내기 파일의 이름을 지정합니다. -에스서버 이름 가져오기 또는 내보내기 작업을 수행해야 하는 컴퓨터를 지정합니다. 기본 프로그램 식별해당 컴퓨터에서 실행됩니다. 식별설치되었습니다. -씨라인1 라인2 모든 발생을 대체합니다. 라인1콘텐츠 라인2. 일반적으로 한 도메인에서 다른 도메인으로 데이터를 가져오고 내보내기를 수행하는 도메인의 고유 이름을 바꿔야 할 때 사용됩니다( 1호선), 도메인 이름 가져오기( 2호선). -V 세부 로깅 모드를 활성화합니다. -제이 로그 파일의 위치를 ​​지정합니다. 기본값은 현재 경로입니다. -티포트 번호 LDAP(Lightweight Directory Access Protocol) 포트 번호를 지정합니다. 기본 LDAP 포트는 389입니다. 글로벌 카탈로그 포트는 3268입니다. -디DN_베이스 데이터 내보내기를 위한 검색 기반의 고유 이름을 지정합니다. -아르 자형LDAP 필터 데이터 내보내기를 위한 LDAP 검색 필터를 만듭니다. 예를 들어 다음 필터는 특정 중간 이름을 가진 모든 사용자를 내보냅니다. csvde -r (그리고(객체클래스=사용자)(sn=)) -피지역 검색 영역을 지정합니다. 검색 범위 매개변수는 다음과 같습니다. 베이스, 원레벨그리고 하위 트리. -엘LDAP_속성_목록 내보내기 요청 결과에 반환된 속성 목록을 지정합니다. 이 매개변수를 생략하면 모든 속성이 반환됩니다. -영형LDAP_속성_목록 내보내기 요청 결과에서 생략할 속성 목록을 지정합니다. 이 옵션은 일반적으로 Active Directory에서 개체를 내보낸 다음 다른 LDAP 호환 디렉터리로 가져올 때 사용됩니다. 다른 카탈로그에서 지원하지 않는 속성이 있는 경우 이 옵션을 사용하여 결과 집합에서 제외할 수 있습니다. -g 페이지 검색을 제거합니다. -중 다음과 같이 쓸 수 없는 속성을 생략합니다. 개체GUID그리고 객체SID. -N 이진 값 내보내기를 생략합니다. -케이 가져오기 작업 중 오류를 무시하고 처리를 계속합니다. 다음은 무시된 오류의 전체 목록입니다.

  • 개체가 이미 그룹의 구성원입니다.
  • 가져온 객체에 다른 속성이 없는 경우 객체 클래스 위반(지정된 객체 클래스가 존재하지 않음을 의미)
  • 개체가 이미 존재합니다.
  • 제한 위반;
  • 속성이나 값이 이미 존재합니다.
  • 그런 개체가 존재하지 않습니다.
-ㅏ고유_이름_비밀번호 지정된 명령을 사용하여 명령 실행을 지정합니다. 고유_이름_사용자_이름그리고 비밀번호 -비. -비사용자 이름 도메인 비밀번호 지정된 명령을 사용하여 실행할 명령을 지정합니다. 사용자 이름, 도메인 및 비밀번호. 기본적으로 명령은 현재 네트워크에 로그인되어 있는 사용자의 자격 증명을 사용하여 실행됩니다. 매개변수와 함께 사용할 수 없습니다. -ㅏ. -? 명령 메뉴를 표시합니다.

노트

  • 매개변수 포함 -씨상수를 사용할 수 있습니다 #schemaNamingContext그리고 #configurationNamingContext스키마 디렉터리 파티션과 구성 디렉터리 파티션의 고유 이름 대신.
  • 명령에 대한 가져오기 파일을 생성하는 경우 식별, 값을 사용 변경 유형가져오기 파일에 포함된 변경 사항 유형을 결정합니다. 가치 변경 유형아래 표에 나와 있습니다.

다음은 값을 사용하는 LDIF 형식의 LDAP 가져오기 파일의 예입니다. 추가하다:
DN: CN=selected_user,DC=도메인 이름
변경 유형: 추가하다
중국: selected_user
설명:파일 설명
객체 클래스: 사용자
객체 클래스: selected_user

반환된 객체의 식별 이름, 일반 이름, 이름, 성, 전화번호만 추출하려면 다음을 입력하십시오.
-엘 고유_이름, 중국, 이름, S.N. 전화
객체의 GUID(Globally Unique Identifier)를 제외하려면 다음을 입력하십시오.
-영형 언제_만들어졌는지, 언제_변경되었나요?, 개체_GUID



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: