11 августа 2015 г.

Маленькие помощники PowerShell

Не владею данным, довольно мощным инструментом, в совершенстве, но иногда приходится выполнять какие-либо работы, в которых необходимо получить или собрать информацию из Active Directory. Консоль MMC не предоставляет того разнообразия функций, которые иногда требуются. Да, есть довольно интересная и в то же время такая же необходимая консоль ADExplorer от SysInternals, в которой тоже не всё так безоблачно. Но по крайней мере она уже может выполнять полноценный поиск по содержимому атрибутов объектов.

Каждому удобны те инструменты, с которыми он привык работать и удовлетворяют его потребности. Но мне приглянулся вот такой скриптовый язык как PowerShell. Довольно продвинутый инструментов для выполнения повседневных задач администрирования и, немного, отчётности и инвентаризации. Пока многие его возможности мною не изучены, но иногда пишу быстрые однострочные команды, выбирающие всю необходимую мне информацию.

Ввиду того, что часто эти операции одноразовые, мною они не были сохранены для возможности повторного использования. Надеюсь, и буду стараться, выкладывать сюда такие однострочные (а может быть и больше) помощники. Как предварительное требование, у Вас уже должна быть установлена поддержка работы PowerShell с Active Directory. Может быть она поставляется отдельно, но у меня она входила в пакет средств удалённого администрирования сервера для Windows 7 (KB958830). Не забудьте включить этот компонент в оснастке "Программы и компоненты" -> "Включение или отключение компонентов Windows":

А дальше просто открываете консоль PowerShell и пишите что хотите =)

Вот что у меня сохранилось.
Import-Module ActiveDirectory
# Незаблокированные ПК с установленной Windows XP
Get-ADComputer -Filter '(operatingSystem -eq "Windows XP Professional") -and (Enabled -eq "True")' -Properties * -SearchBase "ou=XXXX,dc=XXXX,dc=XXXX,dc=XXXX" -Server "DomainController" | Select-Object -Property Name,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | Sort-Object -Property Name | Export-Csv 'd:\out.csv' -UseCulture -NoTypeInformation
# Все незаблокированные компьютеры
Get-ADComputer -Filter '(Enabled -eq "True")' -Properties * -SearchBase "ou=XXXX,dc=XXXX,dc=XXXX,dc=XXXX" -Server "DomainController" | Select-Object -Property Name,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | Sort-Object -Property Name | Export-Csv 'd:\out.csv' -UseCulture -NoTypeInformation

# Список пользователей в контейнере.
import-module activedirectory
# Незаблокированные учётные записи
$user_list = Get-ADUser -Server "DomainController" -SearchBase "OU=XXXX,OU=XXXX,OU=XXXX,DC=XXXX,DC=XXXX,DC=XXXX" -Filter '(Enabled -eq "True")' | Select-Object -Property Name
# Все учётные записи
$user_list = Get-ADUser -Server "DomainController" -SearchBase "OU=XXXX,OU=XXXX,OU=XXXX,DC=XXXX,DC=XXXX,DC=XXXX" -Filter * | Select-Object -Property Name
foreach ($user in $user_list){
    Write-Host $user.Name
}
Write-Host ""
Write-Host "Количество пользователей: " $user_list.Count

Комментариев нет:

Отправить комментарий

Уважаемый комментатор, пишите грамотно.
С благодарностью, автор блога.