Comment verrouiller, déverrouiller, activer et désactiver des comptes AD avec PowerShell
Jul 30, 2018
Les outils de gestion GUI de l'Active Directory, tels que Active Directory Users and Computers (ADUC), conviennent pour effectuer des opérations sur des comptes individuels. Mais lorsque vous devez traiter plusieurs comptes AD, PowerShell est un outil plus flexible. Dans cet article, je vais vous montrer comment utiliser PowerShell pour verrouiller, déverrouiller, activer et désactiver les comptes d'utilisateurs et d'ordinateurs AD individuellement et en masse à l'aide de fichiers délimités par des virgules.
Avant de pouvoir exécuter les cmdlets PowerShell d'Active Directory, vous devez avoir le module Active Directory pour PowerShell installé sur votre ordinateur. Si vous utilisez Windows 10, téléchargez les Outils d’administration de serveur distant (RSAT) pour Windows 10 sur le site web de Microsoft ici et installez-le ensuite. Puis activez la fonctionnalité du module PowerShell AD en ouvrant une invite PowerShell avec des privilèges d'administrateur local et en exécutant la cmdlet Enable-WindowsOptionalFeature comme indiqué ici :
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Facultativement, vous pouvez également mettre à jour les fichiers d'aide en utilisant la cmdlet Update-Help :
Update-Help -Module ActiveDirectory -Verbose -Force
Assurez-vous de fermer l'invite de commande PowerShell, car vous n'aurez besoin des privilèges élevés pour rien d'autre. Les instructions ci-dessous peuvent être exécutées dans le contexte de sécurité de n'importe quel utilisateur disposant des autorisations pour effectuer des opérations sur les comptes utilisateurs dans Active Directory, comme déverrouiller des comptes utilisateurs et activer et désactiver des comptes d'utilisateurs, d'ordinateurs et de services.
Comment trouver des comptes Active Directory verrouillés
Vous ne pouvez pas verrouiller les comptes Active Directory en utilisant PowerShell ou l'interface graphique ; en effet, il n'y a aucune raison de vouloir faire cela. Mais vous pouvez rechercher les comptes d'utilisateurs verrouillés avec l'aide de la cmdlet Search-ADAccount. Ici, je transmets les résultats de la cmdlet Search-ADAccount à la cmdlet Select-Object pour afficher uniquement les attributs Name et SamAccountName de chaque compte verrouillé :
Search-ADAccount -LockedOut -UsersOnly | Select-Object Name, SamAccountName
Comment débloquer des comptes Active Directory
Vous pouvez facilement déverrouiller des comptes d'utilisateur à l'aide de la cmdlet Unlock-ADAccount. Utilisez le paramètre -Identity pour spécifier le compte à déverrouiller ; vous pouvez fournir son nom distinctif, identifiant de sécurité (SID), identifiant unique global (GUID) ou nom de compte du gestionnaire de compte de sécurité (SAM). Voici comment je déverrouille le compte de RussellS :
Unlock-ADAccount -Identity RussellS
Comment activer les comptes Active Directory
Si un objet de compte a été désactivé pour une raison quelconque, vous pouvez le réactiver en utilisant la cmdlet Enable-ADAccount :
Enable-ADAccount -Identity RussellS
Comment désactiver les comptes Active Directory
De même, la cmdlet Disable-ADAccount est utilisée pour désactiver les comptes AD :
Disable-ADAccount -Identity RussellS
Désactivation des utilisateurs à partir d'un fichier CSV
Vous pouvez également désactiver tous les comptes d'utilisateurs Active Directory répertoriés dans un fichier texte délimité par des virgules (.csv). Le fichier doit contenir un en-tête puis une liste de noms d'utilisateurs, un par ligne. Mon fichier CSV n'a qu'une seule colonne (avec l'en-tête « Name »), donc mon fichier délimité par des virgules n'a pas de virgules ! Si votre fichier CSV contient plus d'une colonne, ces colonnes supplémentaires seront tout simplement ignorées par le script.
Je commence par importer le contenu du fichier CSV en tant qu'objet ($users), puis j'utilise une boucle ForEach pour désactiver l'utilisateur sur chaque ligne du fichier texte. Voici le script PowerShell :
$users=Import-CSV c:tempusers.csv
ForEach ($user in $users)
{
Disable-ADAccount -Identity $($user.name)
}
Gérez les comptes AD avec Netwrix Directory Manager
Désactivation de comptes d'ordinateurs à partir d'un fichier CSV
Le script PowerShell pour désactiver les comptes d'ordinateurs listés dans un fichier CSV est presque identique. La principale différence est que je dois ajouter un signe dollar ($) à la fin de la valeur du paramètre -Identity pour indiquer que je souhaite désactiver un objet ordinateur et non un objet compte utilisateur. Je modifie également les noms de variables et de fichiers pour qu'ils soient plus appropriés aux comptes d'ordinateurs.
Voici le script :
$computers=Import-CSV c:tempcomputers.csv
ForEach ($computer in $computers)
{
Disable-ADAccount -Identity "$($computer.name)$"
}
Pour vérifier les résultats, utilisez la cmdlet Search-ADAccount :
Search-ADAccount –AccountDisabled –ComputersOnly | Select-Object Name, SamAccountName
Désactivation des utilisateurs inactifs
Les applets de commande Search-ADAccount et Disable-ADAccount peuvent être utilisées ensemble pour désactiver les comptes d'utilisateurs inactifs. Je vais donner deux exemples. D'abord, je vais créer un nouvel objet timespan ($timespan) et le régler à quatre-vingt-dix jours, puis je l'utiliserai comme valeur du paramètre -TimeSpan pour désactiver les comptes qui n'ont pas été actifs au cours des trois derniers mois. Le paramètre -AccountInactive exige que le niveau fonctionnel du domaine soit Windows Server 2003 ou supérieur.
$timespan = New-Timespan -Days 90
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan | Disable-ADAccount
Une autre option consiste à utiliser le paramètre -DateTime pour retourner les comptes qui sont inactifs depuis une date donnée. Ce script désactive tous les comptes inactifs depuis le 3 juin 2018 :
Search-ADAccount -UsersOnly -AccountInactive -DateTime ‘6/3/2018’ | Disable-ADAccount
Il est important de noter qu'en raison de la manière dont Active Directory synchronise l'attribut LastLogOnDate, les résultats obtenus en spécifiant le paramètre –AccountInactive avec la cmdlet Search-ADAccount peuvent être inexacts de 9 à 14 jours.
Comme vous pouvez le voir, gérer l'état des comptes Active Directory avec PowerShell est simple. Étant donné que PowerShell est orienté objet, il est facile de créer des objets qui contiennent les données que vous souhaitez traiter puis de les transmettre à d'autres cmdlets qui effectuent les actions requises.
Contenu connexe sélectionné :
Partager sur
En savoir plus
À propos de l'auteur
Russell Smith
Consultant en TI
Consultant en TI et auteur spécialisé dans les technologies de gestion et de sécurité. Russell possède plus de 15 ans d'expérience dans le domaine des TI, il a écrit un livre sur la sécurité Windows et a coécrit un texte pour la série de cours académiques officiels de Microsoft (MOAC).
En savoir plus sur ce sujet
Lois sur la confidentialité des données par État : Différentes approches de la protection de la vie privée
Exemple d'analyse des risques : Comment évaluer les risques
Le Triangle CIA et son application dans le monde réel
Qu'est-ce que la gestion des documents électroniques ?
Analyse quantitative des risques : Espérance de perte annuelle