[PowerShell] Créer un compte administrateur local

Vous n’êtes pas sans savoir qu’une des meilleures « best practices » concernant la sécurisation des postes de travail réside dans deux critères :

  • Désactiver le compte « administrateur » local
  • Eviter de créer un compte local sur tous les postes de travail, avec le même mot de passe

Par défaut, le compte « administrateur » est désactivé sous Windows 7.

Il ne nous reste donc plus qu’à créer un nouveau compte local respectant les bonnes pratiques.

Pour se faire, j’ai écrit un script PowerShell qui créé un nouveau compte local, l’ajoute au groupe « Administrateurs » et configure son mot de passe.

Ce script peut être intégré à une séquence de tâches. Pour davantage de détails sur l’exécution d’un script powershell dans une séquence de tâches, c’est par ici.

Détails

  • Afin d’éviter de rencontrer des déboires concernant le nom du groupe « administrateurs » qui diverge selon la langue d’installation de l’OS, nous nous sommes appuyés sur son SID qui est invariable.
  • le nom du nouveau compte local est spécifié dans la variable : $newAccount_name
  • le mot de passe attribué à cet utilisateur est la concaténation de deux champs :
    • un champ commun à tous les postes : Support_
    • un champ spécifique au poste de travail : les 4 derniers caractères du nom d’ordinateur
  • Enfin, avant de créer le compte, nous lui ajoutons une description.

Script

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
$computerName = "$env:computername"
$List = @{}
$computer = [ADSI]"WinNT://$computerName,computer"
$grouplist = $computer.psbase.Children | Where-Object { $_.psbase.schemaclassname -eq 'group' }
foreach ($Group in $grouplist)
{
    $objgroup = New-Object System.Security.Principal.NTAccount($Group.Name)
    $strSID = $objgroup.Translate([System.Security.Principal.SecurityIdentifier])
    if($strSID -eq 'S-1-5-32-544')
    {
        $groupname = $Group.Name
 
        $newAccount_Password = 'Support_' + $computername.substring($computername.length - 4, 4)
 
        $newAccount_name = 'HelpDesk'
        $User = $computer.Create("user",$newAccount_name)
        $User.SetPassword($newAccount_Password)
        $User.SetInfo()
        ([ADSI]"WinNT://$computerName/$groupname,group").Add("WinNT://$newAccount_name")
        $user.put("Description","Compte utilisé par le service HelpDesk")
        $user.setInfo()
        $user.put("FullName",$newAccount_name)
        $user.SetInfo()
    }
}

2 réflexions au sujet de “[PowerShell] Créer un compte administrateur local

  1. Bonjour,

    Je viens de tomber sur ton script qui correspond parfaitement à e que je cherche. Etant nul en script peux tu afficher une version avec le mot de passe qui n’expire jamais stp ?

    Merci

    • Salut Philippe et désolé pour la réponse tardive. Je suis actuellement en déplacement mais dès demain je te donnerai les infos pour répondre à ta question. Salut !

Laisser un commentaire