Powershell суточный отчет по пользователям из ActiveDirectory
Необходимо было сделать небольшой аудит ActiveDirectory на предмет количества пользователей. Отчет больше по цифрам, что-то сверхъестественного там не получилось, но зато информативный.
Раз в сутки (через планировщик задач) скрипт опрашивает ActiveDirectory на предмет:
- Всего пользователей
- Сколько активных
- Сколько служебных
- Сколько заблокированных
- Сколько новых
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$Date = Get-Date -Format "dd MMMM yyyy HH:mm" $AllUsers = (Get-AdUser -Filter * | ?{$_.name -notmatch 'Healthmailbox'}).count $ActiveUsers = (Get-ADUser -Filter {Enabled -eq $true} | ?{$_.name -notmatch 'Healthmailbox'}).count $DisabledUsers = (Get-ADUser -Filter {Enabled -eq $false} | ?{$_.name -notmatch 'Healthmailbox'}).count $StartDate = (Get-Date).AddDays(-1) $EndDate = (Get-Date).AddDays(+1) $Zapros = Get-ADUser -Filter * -Properties Created | Where-Object {$_.Created -gt $StartDate -and $_.Created -le $EndDate} $NewUsers = ($Zapros).count $OFS = "`r`n" #`r`n`r`n "$($WhoUsers = $Zapros | foreach {$_.Name })" $NotSurname = Get-ADUser -filter "Enabled -eq '$true' -and Surname -notlike '*' -and Name -ne 'Healthmailbox'" $NotFIO = ($NotSurname).count $Message = "На $Date в ActiveDirectory всего пользователей $AllUsers из них: `nАктивных: $ActiveUsers из них служебные: $NotFIO. `nЗаблокированных: $DisabledUsers. `nНовых пользователей: $NewUsers `r`n`r`n$WhoUsers" $Message | Out-File -FilePath "C:\temp\$(Get-Date -Format "dd MMMM yyyy")-UsersAD.txt" |
После выполнения получаем файлик с текущей датой в папке temp.
3 комментария
Сергей
Добрый день! А подскажите пожалуйста, Помимо полного списка новых учетных данных в домене в этом скрипте который вы написали
$Date = Get-Date -Format «dd MMMM yyyy HH:mm»
$AllUsers = (Get-AdUser -Filter * | ?{$_.name -notmatch ‘Healthmailbox’}).count
$ActiveUsers = (Get-ADUser -Filter {Enabled -eq $true} | ?{$_.name -notmatch ‘Healthmailbox’}).count
$DisabledUsers = (Get-ADUser -Filter {Enabled -eq $false} | ?{$_.name -notmatch ‘Healthmailbox’}).count
$StartDate = (Get-Date).AddDays(-1)
$EndDate = (Get-Date).AddDays(+1)
$Zapros = Get-ADUser -Filter * -Properties Created | Where-Object {$_.Created -gt $StartDate -and $_.Created -le $EndDate}
$NewUsers = ($Zapros).count
$OFS = «
r
n» #r
nr
n«$($WhoUsers = $Zapros | foreach {$_.Name })»
$NotSurname = Get-ADUser -filter «Enabled -eq ‘$true’ -and Surname -notlike ‘*’ -and Name -ne ‘Healthmailbox'»
$NotFIO = ($NotSurname).count
$Message = «На $Date в ActiveDirectory всего пользователей $AllUsers из них:
nАктивных: $ActiveUsers из них служебные: $NotFIO.
nЗаблокированных: $DisabledUsers.nНовых пользователей: $NewUsers
rn
r`n$WhoUsers»$Message | Out-File -FilePath «C:\temp\$(Get-Date -Format «dd MMMM yyyy»)-UsersAD.txt»
Можно так же в сделать отчет с полным списком всех учетных записей , активных служебных заблокированных, что бы потом сравнивать. Для аудита.
kanitelka
Не совсем понял. По именам?
KAS
Благодарность Автору — скрипт рабочий, понятный и информативный!