В Windows 10 и Windows 11 важно отслеживать пользователей и группы с правами локальных администраторов для обеспечения безопасности. В этой статье описано, как просмотреть состав группы Administrators на локальных и удалённых компьютерах, а также как удалить лишних администраторов с помощью Управления компьютером, PowerShell, Invoke-Command и групповых политик.
Просмотр локальных администраторов на локальном компьютере
Через Управление компьютером
1. Откройте оснастку Управление компьютером (Computer Management):
– Нажмите Win+R, введите compmgmt.msc.
2. Перейдите в Локальные пользователи и группы (Local Users and Groups) → Группы (Groups).
3. Выберите группу Администраторы (Administrators).
– По умолчанию права администратора имеют локальная учётная запись Администратор и доменная группа Domain Admins (в домене Active Directory).
– Дополнительные пользователи или группы добавляются вручную, через скрипты или групповые политики.
Через PowerShell
1. Выведите состав группы Администраторы:
Get-LocalGroupMember -Group "Administrators"
– Поле PrincipalSource указывает источник: Local, ActiveDirectory или AzureAD.
2. Фильтрация локальных пользователей:
Get-LocalGroupMember Administrators | Where-Object { (Get-LocalUser $_.SID -ErrorAction SilentlyContinue).Enabled }
3. Фильтрация пользователей из Active Directory:
Get-LocalGroupMember Administrators | Where-Object {$_.PrincipalSource -eq "ActiveDirectory"} | Select PrincipalSource, ObjectClass, Name, SID
4. Получение подробной информации об AD-пользователях и группах (требуется модуль Active Directory из RSAT):
$admins = Get-LocalGroupMember Administrators | Where-Object {$_.PrincipalSource -eq "ActiveDirectory"}
foreach ($admin in $admins) {
if ($admin.ObjectClass -eq "User") { Get-ADUser $admin.SID | Select SamAccountName, Enabled }
if ($admin.ObjectClass -eq "Group") { Get-ADGroupMember $admin.SID | ForEach-Object { Get-ADUser $_ | Select-Object SamAccountName, Enabled } }
}
Просмотр администраторов на удалённых компьютерах
Для удалённого доступа требуется настроенный PowerShell Remoting (порт TCP 5985 открыт, WinRM включён через GPO).
На одном удалённом компьютере
Получите список администраторов на компьютере wks-t1122:
Invoke-Command -ComputerName wks-t1122 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators' | Select Name, ObjectClass, PrincipalSource | Format-Table}
На нескольких компьютерах
1. Исключите группу Domain Admins:
$results = Invoke-Command -ComputerName wks-t112, srv-rds2 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators' | Where-Object {$_.Name -notlike "*Domain Admins*"} | Select Name, ObjectClass, PrincipalSource}
$results | Select-Object PSComputerName, Name, ObjectClass, PrincipalSource
2. Экспортируйте результаты в CSV:
$results | Export-CSV "C:\PS\admins.csv" -NoTypeInformation -Encoding UTF8
На всех серверах в домене
1. Получите список серверов Windows Server в Active Directory:
$computers = (Get-ADComputer -Filter 'OperatingSystem -like "*Windows Server*" -and Enabled -eq "True"').Name
2. Запросите администраторов:
$results = Invoke-Command -ComputerName $computers -ScriptBlock {Get-LocalGroupMember -Name 'Administrators' | Where-Object {$_.Name -notlike "*Domain Admins*"} | Select Name, ObjectClass, PrincipalSource} -ErrorAction SilentlyContinue
Удаление пользователей из группы администраторов
Для минимизации рисков важно ограничивать количество администраторов. Используйте Restricted Groups в групповых политиках для автоматического управления составом группы Administrators.
Ручное удаление
1. На локальном компьютере:
Remove-LocalGroupMember -Group Administrators -Member username
2. На удалённом компьютере:
Invoke-Command -ComputerName wks-t1122 -ScriptBlock {Remove-LocalGroupMember -Group Administrators -Member username}
Массовое удаление через PowerShell
1. Соберите список администраторов:
$results = Invoke-Command -ComputerName wks-11, wks-22 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators' | Where-Object {$_.Name -notlike "*Domain Admins*"} | Select Name, ObjectClass, PrincipalSource, SID}
2. Выведите список в таблице Out-GridView:
$principals_to_remove = $results | Out-GridView -Title "Выберите пользователей для удаления из локальных администраторов" -OutputMode Multiple
3. Удалите выбранных пользователей:
foreach ($principal in $principals_to_remove) {
Invoke-Command -ComputerName $principal.PSComputerName -ScriptBlock {Remove-LocalGroupMember -Group Administrators -Member $using:principal.Name}
}
Примечание: Конструкция $using:principal.Name передаёт локальную переменную в удалённую сессию PSRemoting.
Устранение неполадок
– Команда Get-LocalGroupMember не работает:
– Убедитесь, что используется PowerShell 5.1 или выше.
– Запустите PowerShell с правами администратора.
– Ошибка доступа при удалённом выполнении:
– Проверьте, включён ли WinRM (Enable-PSRemoting).
– Убедитесь, что порт 5985 открыт (Test-NetConnection -ComputerName wks-t1122 -Port 5985).
– Пользователь не удаляется:
– Проверьте, не добавлен ли он через GPO (Restricted Groups).
– Убедитесь, что учётная запись не является встроенной (Administrator).
Рекомендации
– Безопасность: Минимизируйте количество администраторов, используя Restricted Groups в GPO.
– Мониторинг: Настройте аудит изменений группы Administrators в Просмотре событий (Event Viewer, журнал Безопасность (Security)).
– Резервное копирование: Перед удалением создайте точку восстановления.
Определение и управление локальными администраторами в Windows 10 и Windows 11 возможно через Управление компьютером, PowerShell и Invoke-Command. Автоматизация с помощью Restricted Groups и массовое удаление через Out-GridView упрощают контроль над правами. Эти методы обеспечивают безопасность и эффективность управления доступом в локальных и доменных средах.