Провкеряем права администратора на сотне удалённых серверов
Как быстро проверить, какие пользователи имеют права администратора на сотне удалённых серверов?
Ручной подход, это бессмысленная трата времени и риска забыть какой-то хост, поэтому я собрал небольшой PowerShell-скрипт для автоматического аудита.
|
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 |
# Список серверов в текстовом файле (по одному в строке) $servers = Get-Content -Path "C:\scripts\servers.txt" # Формируем результаты $report = foreach ($server in $servers) { Try { Invoke-Command -ComputerName $server -ScriptBlock { Get-LocalGroupMember -Group "Administrators" | Select-Object @{Name='Server';Expression={$env:COMPUTERNAME}}, Name, ObjectClass } -ErrorAction Stop } Catch { [PSCustomObject]@{ Server = $server Name = '<не удалось получить данные>' ObjectClass = 'Error' } } } # Сохраняем в CSV и открываем $csvPath = "C:\reports\AdminsAudit_$(Get-Date -Format yyyy-MM-dd).csv" $report | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8 Invoke-Item $csvPath |
Что делает скрипт:
- Берёт список серверов из файла servers.txt
- Через Invoke-Command собирает членов локальной группы Administrators на каждом хосте
- Обрабатывает ошибки (например, недоступный сервер)
- Экспортирует итоговый отчёт в CSV с датой в имени
Этот подход легко расширить — добавить уведомление по почте через Send-MailMessage или интеграцию с Teams/Slack, а также запускать по расписанию в Task Scheduler или Azure Automation.