Поиск неиспользуемых аккаутов пользователей и компьютеров в 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
Комментарии
классный сайт спасибо за инфу
классный сайт спасибо за инфу