Как да получа списък с избрани рекламни групи, в които членува голям списък от потребители? Намерете неактивни потребители в Active Directory

Скриптове за разтоварване на всички потребители от MS Active Directory (ITGC)

Иван Пискунов

Една от стандартните одитни процедури ITGC за каталог Active Directory е да получите изтеглянето на всички потребители на домейна. Въз основа на получените данни след това се формират процедури за тестване, например изучаване на списъка с администратори или идентифициране на потребители с изтекла парола. Най-ефективният начин за формиране на такова разтоварване би бил използването на стандартния интерфейс PowerShell , примери за които ще разгледаме в тази статия

1. Експресно качване с помощта на скрипт PowerShell

По-долу е даден PowerShell скрипт като един от най-лесните и бързи начини да получите списък с всички потребители на домейн на AD във формат CSV, който може да бъде отворен без проблеми от същия Excel.

$ objSearcher = New-Object System.DirectoryServices.DirectorySearcher $ objSearcher.SearchRoot = "LDAP: // ou = Потребители, ou = Отдели, dc = тест, dc = ru" $ objSearcher.Filter = "(& (objectCategory = човек) (! userAccountControl: 1.2.840.113556.1.4.803: = 2)) "$ потребители = $ objSearcher.FindAll () # Брой акаунти $ users.Count $ потребители | ForEach-Object ($ user = $ _. Properties New-Object PsObject -Property @ (Заглавие = $ user.description Отдел = $ user.department Вход = $ user.userprincipalname Телефон = $ user.telephonenumber Стая = $ user.physicaldeliveryofficename Пълно име = $ user.cn)) | Експортиране-Csv -NoClobber -Кодиране utf8 -Път C: list_domen_users.csv

За да работи скриптът във вашата система, трябва леко да го коригирате, а именно да въведете необходимите параметри, т.е. тъй като в този пример това са параметри Потребители в единицата Отдели в домейна Test.ru. И също така посочете пътя до мястото, където е записан файлът list_domen_users.csv

След разтоварване, ако отворите веднага list_domen_users.csv , ще изглежда в нечетим вид, но със стандартни средства можем лесно да го приведем във формат, от който се нуждаем. Отваряне в Excel list_domen_users.csv , изберете първата колона, след това отидете в раздела "Данни" и щракнете върху "Текст по колони". Изберете "разделени" и щракнете върху "Напред". Готов!

! Трябва да се отбележиче този скрипт няма да показва повече от 1000 потребители. Той е доста подходящ за малка компания, но тези, които имат огромен брой потребители в домейна, трябва да използват методите, описани по-долу.

2. Разширена команда PowerShell за получаване на разтоварени потребители на Active Directory

Инструментът Active Directory Module за Windows PowerShell (въведен в Windows Server 2008 R2 и по-нови версии) ви позволява да генерирате командни команди, които извършват различни манипулации с обекти на AD директория. За да получите информация за потребителите и техните свойства, използвайте командлета Get-ADUser.

Да започна стартирайте прозорец на Powershell с администраторски права и импортирайте модула Active Directory за по-нататъшни действия:
Активна директория на модула за импортиране

Да се избройте всички акаунти в домейна a, нека изпълним командата:

Get-ADUser -filter *

Да се показване на пълна информация за всички налични атрибути потребител tuser, изпълнете командата

Get-ADUser -identity tuser -properties *


Например, ние се интересуваме от информация за датата на промяна на паролата и времето, когато тя изтича ... Резултатът от изпълнението на командата може да бъде експортиран в текстов файл:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Име, PasswordExpired, PasswordLastSet, PasswordNeverExpires> C: tempusers.txt

Или веднага качете в CSV , което в бъдеще ще бъде удобно за експортиране в Excel (освен това, използвайки обекта за сортиране, ще сортираме таблицата по колоната PasswordLastSet и също така ще добавим условието where - потребителското име трябва да съдържа низа "Dmitry")

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | където ($ _. име –като „* Дмитрий *”) | сортиране на обект PasswordLastSet | изберете име на обект, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c: tempuser-password-expires-2015.csv

Добър ден, скъпи читатели и абонати, ние продължаваме да изследваме възможностите на Powershell и Active Directory с вас. Както си спомняте, тя има всички потребителски и компютърни акаунти в базата данни NTDS.dit, всичко е страхотно и централизирано. Когато една компания има повече от един системен администратор, ситуацията може да доведе до натрупване на боклук и ненужни идентификационни данни в нея. Всички сме хора и можем да забравим някои неща, а в някои моменти да бъдем разсеяни, което също ще доведе до забравяне на важна информация. И стигаме до извода, че неактивни потребители (уволнени или забравени) се натрупват в Actvie Directory, във всеки случай добър системен администратор трябва да ги идентифицира, да ги деактивира и след това да ги изтрие по желание, което ще направим.

Чрез приставката ADUC

Последния път вече ви дадох пример за използване на добавката Active Directory Users and Computers, чрез която търсихме липсващи компютри в локалната мрежа, които не се бяха появявали от месец. Сега нека направим същото с потребителските акаунти. Имам AD на Windows Server 2012 R2, отворете ADUC, за това натиснете WIN + R и въведете dsa.msc.

Във формуляра за заявка, който се отваря, посочете:

  • Заявка за име> Загубих потребители
  • Описание, ако е необходимо
  • Заявете root> тук можете да оставите целия домейн или да го посочите в желаното OU

След това натискаме бутона заявка.

В раздела потребители виждаме елемента „Брой дни от последното влизане“, например, зададох 60 дни.

В резултат на това ще получите списъка с неактивни акаунти на служители, от които се нуждаете.

Чрез приставката на powershell

Всичко същото може да се направи чрез Powershell. Веднага ще дам код, чиято задача е да търси неактивни потребители, за това избрах период от 45 дни, прекъсване на потребителските данни и преминаване към специално определен OU.

$ date_with_offset = (Get-Date) .AddDays (-45)
$ потребители = Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $date_with_offset) | Сортиране на LastLogonDate
foreach ($ потребител в $ потребители) (set-aduser $ user -enabled $ false; move-adobject -identity $ user -targetpath "ou = Уволнен, ou = Msk L. потребители, ou = Местоположение, dc = msk, dc = contoso, dc = com ")
Get-ADUser -Properties LastLogonDate -Filter (LastLogonDate -lt $ date_with_offset) | Сортиране Дата на последно влизане | FT име, LastLogonDate -AutoSize | Извън файл c: \ Script \ users.txt

  • В първия ред декларирате променлива, в която задавате думата за търсене
  • Създайте променлива и извадка до времето за последно влизане
  • Преместване на потребители

  • Изготвяне на отчет във файл

Още полезни неща за работа с потребителя. Преди да използвате командите по-долу, трябва да заредите модула Active Directory чрез командата

Get-Help Get-ADUser

Днес ще се опитаме да разтоварим списъка с всички потребители в отделен файл от Active Directory. PowerShell ще бъде нашият основен помощник по този въпрос. Това е така, защото първоначално Microsoft планира PowerShell Shell като основен инструмент за управление на сървърни компоненти на Windows. И днес, когато вече имаме версия 2.0, като цяло е така.

Дори в близкото минало, за да взаимодействат по някакъв начин с AD, администраторите трябваше да имат на разположение или помощната програма dsquery, или всякакви скриптове или помощни програми. Днес, започвайки с Windows Server 2008 R2, можем да работим с AD чрез PowerShell. С появата на PowerShell 2.0 се използва специален модул за взаимодействие с Active Directory Модул Active Directory за Windows PowerShellкойто съдържа необходимия списък с командлетове. За нашите задачи ще използваме командата Get-ADUser.

Така че, в зависимост от това коя операционна система ще стартираме конзолата PowerShell, ще трябва да извършим „подготвителни стъпки“.

1) Ако работим от под Windows Server до версия 2012г, тогава трябва да изпълним командата:

  • Активна директория на модула за импортиране - команда за импортиране на модул в AD

За версии на операционна система от 2012 г. и по-нови, този модул вече е активиран по подразбиране.

2) Ако работим от който и да е клиент на Windows, тогава пакетът за отдалечено администриране RSAT трябва да бъде инсталиран на него, с инсталиран Active Directory Module за Windows PowerShell компонент.

Струва си да се отбележи, че командлетът Get-ADUser се препоръчва да се изпълнява, когато количеството данни, които се качват, е до 1000 потребители.

Експортиране на потребители на AD с помощта на PowerShell в отделен файл

Първо, нека извикаме помощта за командата Get-ADUser. В резултат на това ще получите всички необходими команди за по-нататъшно администриране.

  • помогнете на Get-ADUser - команда за извикване на помощ

За да получите списък с всички потребители с всички свойства в прозорец на PowerShell, изпълнете следната команда:

  • Get-ADUser -filter * - експортиране на списък с потребители на AD

Това разтоварване не е напълно информативно и не побира цялата необходима информация в прозореца. Затова нека се опитаме да стесним търсенето и да покажем свойствата на конкретен потребител с име user1:

  • Get-ADUser -identity user1 -properties * - експортиране на свойства на конкретен потребител

Сега нека се опитаме да експортираме списъка с всички потребители с техните свойства във външен. txt или csvфайл:

  • Get-ADUser -filter * -properties * | Export-csv -path c: \ users.csv -encoding Unicode - експортиране на потребители в отделен файл

Бих искал да обърна специално внимание на ключа -кодиране на Unicode... Използва се, за да може руската кирилица, след експортиране от AD, да се показва коректно в качения файл. Например чрез Microsoft Excel ще видим въпросителни вместо руски букви.

Когато преглеждате файл, данните се експортират на един ред и по този начин не могат да се четат. За да променим това, трябва да направим следното:

В тази статия ще разгледаме възможностите на PowerShell за управление на групи от домейни на Active Directory. Ще разгледаме как да създадете нова група в AD, да добавите потребители към нея (или изтриете), да изброите потребителите в групата и няколко други полезни трика за група домейни, които са изключително полезни при ежедневната администрация. Следните основни командлети са налични в модула PowerShell на Active Directory за управление на AD групи:

За да използвате тези командлета във вашата сесия на PowerShell, трябва да бъде зареден специален модул за взаимодействие с AD - Модул Active Directory за Windows PowerShell... Този модул е ​​представен за първи път в Windows Server 208 R2. В Windows Server 2012 и по-нови версии този модул е ​​активиран по подразбиране. На клиентски компютри той може да бъде инсталиран и активиран като един от компонентите на RSAT. Можете да проверите дали модулът е зареден по следния начин:

Get-Module -Listavaable

Както можете да видите, модулът ActiveDirectory е зареден. Ако не, импортирайте го с командата:

Активна директория на модула за импортиране

Пълен списък с команди на модула може да бъде получен, както следва:

Get-Command -Module ActiveDirectory

В модула има 147 командлета, от които 11 могат да работят с групи.

Get-Command -Module ActiveDirectory -Име "* Група *"

Ето списък с тях:

  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • Нова-ADGroup
  • Remove-ADGroup
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

Създайте нова група в посочения контейнер (OU) Active Directory, като използвате командата Нова-ADGroup:

New-ADGroup "TestADGroup" -път "OU = Групи, OU = Москва, DC = corp, dc = winitpro, DC = ru" -GroupScope Global -PassThru – Verbose

Използване на атрибута Описаниеможете да зададете описание на групата и като използвате DisplayNameпроменете екранното име.

Параметърът GroupScopeможете да зададете един от следните типове групи:

  • 0 = DomainLocal
  • 1 = Глобално
  • 2 = Универсален

Можете да създадете група за разпространение по следния начин:

New-ADGroup "TestADGroup-Distr" -път "OU = Групи, OU = Москва, DC = corp, dc = winitpro, DC = ru" -GroupCategory Distribution -GroupScope Global -PassThru –Verbose

Add-AdGroupMember - добавяне на потребители към AD група

Можете да добавите потребители към група Active Directory, като използвате Add- AdGroupMember... Нека добавим двама потребители към новата група:

Add-AdGroupMember -Identity TestADGroup -Членове потребител1, потребител2

Ако списъкът с потребители за добавяне към група е доста голям, можете да запишете списъка с акаунти в CSV файл, след което да импортирате този файл и да добавите всеки потребител към групата.

Форматът на CSV файла е както следва (списък с потребители, по един на ред, името на колоната е потребители)

Импортиране-CSV. \ Users.csv -Заглавни потребители | ForEach-Object (Add-AdGroupMember -Identity „TestADGroup“ -members $ _. Потребители)

За да получите всички членове на една група (група A) и да ги добавите към друга група (група B), използвайте тази команда:

Get-ADGroupMember „GroupA“ | Get-ADUser | ForEach-Object (Add-ADGroupMember -Identity “Group-B” -Members $ _)

В случай, че трябва да копирате членовете на всички вложени групи в нова група (рекурсивно), трябва да използвате следната команда:

Get-ADGroupMember -Identity “GroupA” -Recursive | Get-ADUser | ForEach-Object (Add-ADGroupMember -Identity “GroupB” -Members $ _)

Remove-ADGroupMember - премахване на потребители от група

За да премахнете потребители от AD група, използвайте командата Remove-ADGroupMember. Нека премахнем двама потребители от групата:

Remove-ADGroupMember -Identity TestADGroup -Членове потребител1, потребител2

Потвърдете премахването на потребители от групата:

Ако трябва да премахнете потребители от група според списъка от CSV файл, използвайте следната команда:

Импортиране-CSV. \ Users.csv -Заглавни потребители | ForEach-Object (Remove-ADGroupMember -Identity ‘TestADGroup’ -members $ _. Потребители)

Get-ADGroup - получаване на информация за AD група

Командлетът ще ви помогне да получите информация за групата. Get-ADGroup:

Get-ADGroup "TestADGroup"

Тази команда показва информация за основните атрибути на групата (DN, тип група, име, SID). За да покажете стойността на всички атрибути на AD домейн група, изпълнете следната команда:

Get-ADGroup "TestADGroup" - свойства *

Както можете да видите, сега се показват атрибути като време за създаване и промяна на групата, описание и т.н.

С помощта на командлета Get-ADGroup можете да намерите всички групи, които ви интересуват, по определен модел. Например, трябва да намерите всички AD групи, които съдържат фразата администратори :

Get-ADGroup -LDAPFilter “(име = * администратори *)” | Формат-таблица

Get-ADGroupMember - Избройте потребителите на AD група

Показване на списък с потребители в група:

Get-ADGroupMember "TestADGroup"

За да оставите само потребителски имена в резултатите, изпълнете:

Get-ADGroupMember "TestADGroup" | ft име

Ако тази група включва други групи в домейна, за да се покаже пълен списък с членове, включително всички вложени групи, използвайте параметъра Рекурсивна.

Get-ADGroupMember 'server-admins "-рекурсивно | ft име

За да експортирате списъка с акаунти, принадлежащи към конкретна група, в CSV файл (за по-нататъшна употреба в Excel), изпълнете следната команда:

Get-ADGroupMember 'server-admins "-recursive | ft samaccountname | Out-File c: \ ps \ admins.csv

Ще използваме командлета, за да добавим информация за потребителския акаунт на AD към текстов файл. Например, в допълнение към акаунта, трябва да покажете позицията и телефонния номер на потребителя на групата:

Get-ADGroupMember -Идентичност 'сървър-администратори' -рекурсивно | foreach (Get-ADUser $ _ -properties title, OfficePhone | Select-Object title, OfficePhone)

(Get-ADGroupMember -Идентичност "администратори на домейн"). Брой

Оказа се, че имаме 7 администраторски акаунта в групата "администратори на домейн".

За да намерите списък с празни групи в конкретно OU, използвайте тази команда:

Get-ADGroup -Filter * -Properties Members -searchbase “OU = Moscow, DC = corp, dc = winitpro, DC = ru” | където (-не $ _. членове) | изберете Име