Предположим, что администратор домена уволен, и теперь вы новый администратор сервера Windows 2012. При управлении сетью что-то подсказывает вам, что некоторые люди используют локальные учетные записи с правами администратора для входа на компьютеры (возможно, они получили этих пользователей от предыдущего администратора). Теперь вы хотите отключить всех локальных администраторов, ЗА ИСКЛЮЧЕНИЕМ встроенного администратора с групповой политикой.
Я пытался изменить «Разрешить локальный вход» в:
Computer Configuration
* Policies
* Windows Settings
* Security Settings
* Local Policies
* User Rights Assignment
Но дело в том, что Windows позволяет вам делать это только в том случае, если вы добавляете «Группу администраторов» в разрешенный список, и тем самым мы вернемся к исходной точке.
Может, вы задаете неправильный вопрос. Вместо того, чтобы пытаться отключить группу учетных записей локальных пользователей на нескольких разных компьютерах, возможно, вам следует использовать группы с ограниченным доступом в групповой политике, чтобы точно определить, кому разрешено быть членом группы администраторов на компьютерах. Он удалит все учетные записи, входящие в локальную группу администраторов на всех машинах, за исключением указанных вами учетных записей (или групп).
https://technet.microsoft.com/en-us/library/cc756802(v=ws.10).aspx
Но если по какой-то причине вы действительно хотели оставить локальные учетные записи пользователей в группе локальных администраторов на всех клиентах, а просто отключить их, тогда вам придется разработать сценарий для этого.
Изменить: потому что сегодня ленивый субботний день, я написал сценарий, который делает то, что вы описали. Он отключает все учетные записи локальных пользователей, которые являются членами группы администраторов. Кроме для встроенного Администратора. Это не самый эффективный способ, но мне лень его оптимизировать. Опять же, для записи, я рекомендую использовать группы с ограниченным доступом групповой политики, но мне просто захотелось написать сценарий.
# Author: Ryan Ries
# This script disables all local user accounts who are members of the Administrators group,
# except for the built-in Administrator (sid-500).
# Use at your own risk.
Set-StrictMode -Version Latest
[Int]$DomainRole = (Get-WmiObject Win32_ComputerSystem).DomainRole
# Don't run if we are a domain controller.
If (($DomainRole -EQ 4) -OR ($DomainRole -EQ 5))
{
Write-Error "This script cannot be run on a domain controller."
Return
}
# We need to be an elevated administrator.
$CurrentUser = New-Object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())
If (-Not($CurrentUser.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)))
{
Write-Error "$($CurrentUser.Identity.Name) is not currently an Administrator. (Need UAC elevation?)"
Return
}
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$ContextType = [System.DirectoryServices.AccountManagement.ContextType]::Machine
$Context = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ContextType, $Env:COMPUTERNAME
$IDType = [System.DirectoryServices.AccountManagement.IdentityType]::SamAccountName
$Group = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($Context, $IDType, 'Administrators')
Foreach ($Member In $Group.Members)
{
If ($Member.Sid.Value.EndsWith('-500'))
{
# This is the built-in local administrator, so we'll skip it.
Continue
}
$User = [ADSI]"WinNT://./$($Member.SamAccountName)"
$User.UserFlags = 2
$User.CommitChanges()
}