Talvez você esteja fazendo a pergunta errada. Em vez de tentar desabilitar várias contas de usuários locais em vários computadores diferentes, talvez você deva usar Grupos Restritos na Diretiva de Grupo para definir exatamente quem tem permissão para ser um membro do grupo Administradores nos computadores. Ele removerá todas as contas que estão no grupo Administradores local em todas as máquinas, exceto as contas (ou grupos) que você especificar.
Mas, se por algum motivo você realmente quiser deixar as contas de usuários locais no grupo Administradores local em todos os clientes, mas apenas desativá-las, você terá que desenvolver um script para fazer isso.
Edit: Porque é uma tarde preguiçosa de sábado, eu escrevi um script que faz o que você descreveu. Ele desativa todas as contas de usuário locais do usuário que são membros do grupo Administradores exceto para o Administrador interno. Não é o caminho mais eficiente, mas tenho preguiça de otimizá-lo. Mais uma vez, para constar, minha recomendação é usar grupos restritos de política de grupo, mas eu senti vontade de fazer alguns scripts.
# 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()
}