Peut-être posez-vous la mauvaise question. Au lieu d'essayer de désactiver un grand nombre de comptes d'utilisateurs locaux sur plusieurs ordinateurs différents, vous devriez peut-être utiliser les groupes restreints dans la stratégie de groupe pour définir exactement qui est autorisé à être membre du groupe Administrateurs sur les ordinateurs. Cela supprimera tous les comptes qui font partie du groupe local Administrateurs sur toutes les machines, à l'exception des comptes (ou groupes) que vous spécifiez.
https://technet.microsoft.com/en-us/library/cc756802(v=ws.10).aspx
Mais si, pour une raison quelconque, vous souhaitez laisser les comptes d'utilisateurs locaux dans le groupe des administrateurs locaux sur tous les clients, mais simplement les désactiver, vous devrez développer un script pour le faire.
Edit : Parce que c'est un samedi après-midi paresseux, j'ai écrit un script qui fait ce que vous avez décrit. Il désactive tous les comptes d'utilisateurs locaux qui sont membres du groupe Administrateurs. sauf pour l'administrateur intégré. Ce n'est pas la méthode la plus efficace, mais je suis trop paresseux pour l'optimiser. Encore une fois, pour mémoire, je recommande d'utiliser les groupes restreints de la stratégie de groupe, mais j'ai eu envie de faire un peu de script.
# 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()
}