PowerShell. Поиск неиспользуемых учётных записей пользователей и компьютеров в домене.
Вывод списка компьютеров, не имевших входа в домен более 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 не имеющих входа с 15.10.2010
Search-ADAccount -AccountInactive -DateTime "15.10.2010" –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)
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
