Поиск неиспользуемых аккаутов пользователей и компьютеров в AD c помощью PowerShell и другие примеры.

В продолжение прошлой статьи - Работа с Active Directory c использованием командлетов Powershell на серверах под управлением Windows 2003/2008, рассмотрим некоторые примеры использования этих командлетов.

Начнем с вопроса, который часто волнует сисадминов, как узнать какие аккаунты AD уже не используются. Для определения задачи уточним формулировку до какие аккаунты не  используются долгое время (например полгода).

Вывод списка компьютеров, не имевших входа в домен более 6 месяцев:
get-adcomputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | FT Name,LastLogonDate

Отсортируем немного вывод для удобочитаемости:
get-adcomputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | sort Name | FT Name,LastLogonDate

Удаление всех учетных записей компьютеров с отсутствием входа более 6 месяцев (мой совет, не копипастите этот командлет без осознания содеянного):
get-adcomputer -properties lastLogonDate -filter * | where { $_.lastLogonDate -lt (get-date).addmonths(-6) } | Remove-ADComputer

Поиск отключенных аккаунтов пользователей с выводом примерной даты отключения (последнего входа этого пользователя в домен)
Search-ADAccount -accountdisabled | where {$_.lastlogondate -lt (get-date).addmonths(-12)} | FT Name,LastLogonDate

Другие полезные примеры:

Просмотр всех учетных записей компьютеров в домене:
Get-ADComputer –Filter {Name –Like "*"}

Просмотр всех компьютеров не имевших вход 90 дней:
Search-ADaccount -AccountInactive -Timespan 90 -ComputersOnly

или

$lastLogon = (get-date).adddays(-90).ToFileTime()
Get-ADComputer -filter {lastLogonTimestamp -gt $lastLogon}

Поиск и удаление всех отключенных аккаунтов компьютеров в AD
Search-ADAccount -AccountDisabled -ComputersOnly | Sort-Object | Remove-ADComputer

Поиск и удаление отключенных аккаунтов компьютеров в определенном OU
Search-ADAccount -AccountDisabled -Searchbase "OU=IT,DC=Contoso,DC=Com" -ComputersOnly | Sort-Object | Remove-ADComputer

Поиск и удаление всех компьютеров из AD не имеющих входа с 18.12.2011
Search-ADAccount -AccountInactive -DateTime "18.12.2011" –ComputersOnly | Sort-Object | Remove-ADComputer

Вывод списка отключенных учетных записей компьютеров
Search-ADAccount -AccountDisabled -ComputersOnly | Format-Table Name

Перемещение объекта "Компьютер" в другой OU (например: Computer=CLIENT1 в OU=IT )
Get-ADComputer CLIENT1 | Move-ADObject -TargetPath "OU=IT,DC=Contoso,DC=Com"

Просмотреть детали учетной записи компьютера (для примера Computer=CLIENT1)
Get-ADComputer -Filter {Name -Like "CLIENT1"}

Вывод всех свойств учетной записи компьютера (для примера Computer=CLIENT1)
Get-ADComputer "CLIENT1" -Properties *

Вывод списка компьютеров (Имя, Операционная система, Сервис-Пак, Версия ОС)
Get-ADComputer -Filter * -Property * | Format-Table Name,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion -Wrap –Auto

Экспорт списка комьютеров  (Имя, Операционная система, Сервис-Пак, Версия ОС) в CSV-файл
Get-ADComputer -Filter * -Property * | Select-Object Name,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion | Export-CSV AllWindows.csv -NoTypeInformation -Encoding UTF8

Получение DNS имени и IP-адреса
Get-ADComputer -Filter {Name -Like "Computer-Name"} -Properties IPv4Address | Format-List Name,DnsHostName,IPv4Address

Список всех компьютеров в определенном (для примера OU=IT, Domain=domain.com)
Get-ADComputer -SearchBase "OU=IT,DC=domain,DC=Com" -filter *

Получение списка всех компьютеров без DNS суффикса
Get-ADComputer -filter "DnsHostName -notlike '*.domain.Com'"

Получение SPNs (Service Principal Name) компьютера
Get-ADComputer "Computer-Name" –Properties ServicePrincipalNames | Select-Object –Expand ServicePrincipalNames

Получение Сида (SIDs) компьютера
Get Computers Security Identifiers (SIDs)
Get-ADComputer -Filter {Name -like "*"} | Select Name,SID | Format-Table -Auto

Список компьютеров созданных за последние 90 дней
Get-ADComputer -Filter * -Properties whenCreated | ? { ((Get-Date) - $_.whenCreated).Days -lt 90} | Format-Table Name,WhenCreated,Name,DistinguishedName -Autosize -Wrap

Список компьютеров созданных 1 декабря 2011 (12/01/2011)
Get-ADComputer -LDAPFilter "(&(objectCategory=person)(whenCreated>=20111201000000.0Z))" -Properties whenCreated | Format-Table Name,whenCreated,distinguishedName -Autosize -Wrap

Список компьютеров созданных в интервал времени, например между 10/01/2011 и 12/01/2011
$Start = Get-Date -Day 01 -Month 10 -Year 2011 -Hour 00
$End = Get-Date -Day 01 -Month 12 -Year 2011 -Hour 23 -Minute 59
Get-ADComputer -Filter * -Properties whenCreated | ? { ($_.whenCreated -gt $Start) -and ($_.whenCreated -le $End) } | Format-Table Name,WhenCreated,DistinguishedName -Autosize -Wrap

Работа с группами:

Просмотра всех участников группы (для примера: Group=Experts)
Get-ADGroupMember Experts | Format-Table Name

Вывод списка свойств для группы (для примера: Group=IT)
Get-ADGroup IT -Properties *

Список только универсальных групп (Universal Security groups)
Get-ADGroup –LDAPFilter "(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483640))"

Список глобальных групп (Global Security groups)
Get-ADGroup –LDAPFilter "(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483646))"

Список локальных групп в домене (Local Security groups)
Get-ADGroup –LDAPFilter "(&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=-2147483644))"

Узнать список групп в которые включен пользоатель (для примера: User=EdPrice)
Get-ADAccountAuthorizationGroup EdPrice

Перемещение группы в другой OU (для примера: Group=Experts, Old-OU=IT, New-OU=Service, Domain=Contoso.com)
Move-ADObject "CN=Experts,OU=IT,DC=Contoso,DC=com" -TargetPath "OU=Service,DC=Contoso,DC=com"

Добавление пользователя в группу (для примера: Group=Experts, User=EdPrice)
Add-ADGroupmember Experts -Member EdPrice

Удаление группы (для примера: Group=Experts)
Remove-ADGroup Experts

Удаление пользоателя из группы (для примера Group=Experts, User=EdPrice)
Remove-ADGroupMember Experts -Member EdPrice

Установить описание для группы (для примера  Group=JoinPC, Description=This group is allowed join PCs to Domain)
Set-ADGroup JoinPC -Description "This group is allowed join PCs to Domain"

Работа с OU

Все OU (Organization Unit или Подразделение) в домене
Get-ADOrganizationalUnit -Filter {Name -like „*“} | FT Name, DistinguishedName -A

Создание OU (для примера OU=IT, Domain=domain.com)
New-ADOrganizationalUnit -Name IT -Path "DC=Domain,DC=Com"

Содержание определенного OU (для примера: OU=IT, Domain=Contoso.com)
Get-ADObject -Filter {Name -Like "*"} -Searchbase "OU=IT,DC=Contoso,DC=Com"

Удаление OU (для примера: Old-Name=IT, New-Name=Admin, Domain=Contoso.com)
Rename-ADObject "OU=IT,DC=Contoso,DC=Com" -NewName Admin

Удаление содержимого OU (для примера: OU=IT, Domain=Contoso.com)
Delete OU including contents (example: OU=IT, Domain=Contoso.com)
Remove-ADOrganizationalUnit IT -Recursive

Удаление пользователя из определенного OU (для примера: User=EdPrice, OU=IT, Domain=Contoso.com )
Remove-ADObject "CN=EdPrice,OU=IT,DC=Contoso,DC=Com"

Перемещение всех объектов из одного OU в другой (для примера: Old-OU=IT, New-OU=Manager, Domain=Contoso.com)
Get-ADObject -Filter {Name -Like "*"} -Searchbase "OU=IT,DC=Contoso,DC=Com" -SearchScope OneLevel | Move-ADObject -TargetPath "OU=Manager,DC=Contoso,DC=Com"

Работа с пользователями

Список всех пользователей домена
Get-ADUser –Filter *

Список пользователей определенного OU (для примера: OU=IT, Domain=Contoso.com)
Get-ADUser –Filter * -Searchbase "OU=IT,DC=Contoso,DC=Com" | FT

Список всех пользователей из определенного города (поле City)
Get ADUser -Filter {city - like "NewYork"} | FT

Список отключенных аккаунтов пользователей домена

Search-ADAccount –AccountDisabled –Usersonly | FT Name

Список всех пользователей, чье имя начинается на Ed
Get-ADUser –Filter {givenName –Like "Ed"} | FT

Список пользователей, чья фамилия Prince
Get-ADUser –Filter {Surname –Like "Price"} | FT

Список аккаунтов пользоатлей определенного департамента (поле Department)
Get-ADUser –Filter {Department –Like "Support"} | FT

Список членства в группах определенного пользователя (для примера:
Get-ADPrincipalGroupMembership -Identity Richard

Поиск пользователей входящих в определенную группу и перемещение их в другой OU (для примера: Group=People, Target OU=NewYork, Domain=Contoso.com)
Get-ADGroupMember People -Recursive | Move-ADObject  –TargetPath "OU=NewYork,DC=Contoso,DC=Com"

Удаление всех пользователей OU в определенную группу (для примера: Group=People, OU=NewYork, Domain=Contoso.com)
$Users = Get-ADUser -Filter * -Searchbase "OU=NewYork,DC=Contoso,DC=Com"
Remove-ADGroupMember -Identity People -Member $Users -Confirm:0

0
Голосов пока нет

Комментарии

классный сайт спасибо за инфу