Автоматический аудит компьютеров в Active Directory через powershell.
В данной статье мы рассмотрим как автоматически проводить аудит компьютеров в Active Directory.
Я думаю многие системные администраторы ломали голову как вести учет за каким ПК какой пользователь работает, особенно если имена ПК статичны.
Для решения данной проблемы воспользуемся PowerShell.
Алгоритм данного скрипта будет таким:
1) Делаем выборку по всем пк, которые попадают под фильтр
2) Проверяем какой пользователь в настоящий момент работает за ПК
3) Переводим полученные данные в удобный формат
4) Записываем данные в отчет
5) Добавляем в описание компьютера имя пользователя
Внимание, данный скрипт подойдет тем администраторам, у которых рабочие места пользователей статичны.
Если в вашей организации пользователи постоянно пересаживаются с места на место, такой подход будет неудобен.
Перейдем к скрипту:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# Объявляем переменные # область поиска $OU="DC=domain,DC=local" # Указываем Домен $domain='DOMAIN' # Указываем путь к отчету $reportPatch="C:\PC_audit.csv" #Импортируем модуль ActiveDirectory Import-Module ActiveDirectory Remove-Item C:\PC_audit.csv # Отбираем ПК по фильтру Get-ADComputer -Filter * -SearchBase $OU | ForEach-Object { #Переводим в переменную только имя ПК $computer=($_).Name # Узнаем какой пользователь работает на данном ПК и удаляем приставку с названием домена. $list=(gwmi win32_computersystem -comp $computer | select USername).USername -replace $domain # Удаляем спец символы из полученного вывода $list=[System.Text.RegularExpressions.Regex]::Replace("$list($7&","[^1-9a-zA-Z_]"," "); # Удаляем пробелы из полученного вывода $list=$list -replace '\s','' # Находим пользователя в ActiveDirectory по samaccountname и переводим в вывод Имя Фамилия $list=(Get-ADUser $list).Name # Выводим полученный результат на экран - ПК - Имя Фамилия echo "$computer - $list" # Записываем полученные данные в отчет $result=(echo"$computer - $list") $result=$result -replace '\s','' $result >> $reportPatch # Добавляем Имя и Фамилию пользователя в описание ПК в Active Directory Get-ADComputer $computer | Set-ADComputer -Description $list } |
Если при выполнении скрипта будет ошибка:
gwmi : Сервер RPC недоступен.
Это означает что ПК выключен или на нем отключен WMI.
Теперь добавьте данный скрипт в планировщик задач, и запускайте за час до конца рабочего дня.
Скрипт актуализирует информацию о пользователях на работающих ПК.
Удачной установки =)
Добавить комментарий