MyTetra Share
Делитесь знаниями!
Поиск неиспользуемых аккаунтов пользователей и компьютеров в AD c помощью PowerShell
Время создания: 18.06.2015 14:25
Текстовые метки: PowerShell, домен, поиск, аккаунт
Раздел: Компьютер - Windows - Windows Power Shell
Запись: xintrea/mytetra_syncro/master/base/1434626702mjt8ni0c1m/text.html на raw.github.com

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


Начнем с вопроса, который часто волнует сисадминов: как узнать какие аккаунты 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


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования