Comment créer, modifier et tester des mots de passe en utilisant PowerShell
Oct 16, 2018
L'automatisation est la clé pour rationaliser la gestion des tâches Active Directory. Dans cet article, je vais vous montrer comment créer, modifier et tester les mots de passe des utilisateurs avec des scripts PowerShell.
Installation du module PowerShell AD
Avant de pouvoir utiliser PowerShell pour gérer Active Directory, vous devez installer le module PowerShell d'Active Directory. Si vous utilisez Windows 10 pour gérer AD, installez d'abord les Outils d’administration de serveur distant (RSAT).
Windows 10 Version 1809
Si vous utilisez la version 1809 de Windows 10, RSAT est inclus en tant que fonctionnalité à la demande, vous n'avez donc pas besoin de télécharger le package RSAT. Pour activer RSAT dans la version 1809 de Windows 10, exécutez la commande suivante dans une console PowerShell élevée :
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
Versions antérieures de Windows 10
Si vous utilisez une version antérieure de Windows 10, téléchargez le package RSAT approprié depuis le site web de Microsoft:
- Si vous gérez la version 1803 ou 1709 de Windows Server, téléchargez et installez le paquet WS_1803.
- Si vous gérez Windows Server 2016 ou des versions antérieures de Windows Server, téléchargez et installez le package WS2016.
Une fois RSAT installé, lancez la console PowerShell en tant qu'administrateur local et activez le module PowerShell AD en utilisant cette commande PowerShell :
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
Créez des informations d'identification avec un mot de passe en utilisant PowerShell
Pour créer un nouveau compte utilisateur, utilisez le cmdlet New-ADUser. Dans l'exemple ci-dessous, j'ai codé en dur le domaine ad.contoso.com dans la variable $UPN. Vous devriez modifier cela pour correspondre au suffixe UPN que vous souhaitez attribuer aux utilisateurs.
Fournissez le prénom et le nom de l'utilisateur. Le UPN et le SamAccountName seront ensuite créés en ajoutant un point entre le prénom et le nom. Utilisez le script PowerShell suivant :
$GivenName = (Read-Host -Prompt "First Name")
$Surname = (Read-Host -Prompt "Last Name")
$User = $GivenName+"."+$Surname
$UPN = $User+"@ad.contoso.com"
$Password = (Read-Host -Prompt "Password" -AsSecureString)
New-ADUser -Name $User -SamAccountName $User -UserPrincipalName $UPN -AccountPassword $Password -GivenName $GivenName -Surname $Surname -Enabled $True
Créer un nouveau mot de passe utilisateur AD en utilisant PowerShell
Le code suivant vous invitera à spécifier un nom d'utilisateur et un mot de passe. Vous devez entrer un nom d'utilisateur qui existe déjà dans AD et un mot de passe qui répond aux exigences de complexité du mot de passe du domaine.
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
Changer le mot de passe en utilisant PowerShell
- Modifier le mot de passe d'un utilisateur local
Pour changer le mot de passe d'un utilisateur local, vous devez utiliser les cmdlets Get-LocalUser et Set-LocalUser :
$Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
- Modifier le mot de passe d'un utilisateur AD
Pour créer un nouveau mot de passe d'utilisateur AD à l'aide de PowerShell, utilisez le script suivant. Il vous sera demandé de spécifier le nom d'utilisateur d'un compte AD existant, puis un nouveau mot de passe, qui doit répondre aux exigences de complexité de mot de passe du domaine.
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
- Obliger un utilisateur à changer son mot de passe lors de la prochaine connexion
La cmdlet Set-LocalUser ne prend pas en charge la configuration d'un compte utilisateur local pour forcer un changement de mot de passe à la prochaine connexion. Cependant, vous pouvez atteindre le même objectif en forçant l'expiration du mot de passe :
$User = (Read-Host -Prompt "Username")
$Usrstring = "WinNT://localhost/"+$User
$usr=[ADSI] $Usrstring
$usr.passwordExpired = 1
$usr.setinfo()
Mais vous pouvez forcer les utilisateurs à changer leur mot de passe de compte AD en utilisant Set-ADAccountPassword :
$User = (Read-Host -Prompt "Username")
Set-Aduser -Identity $User -ChangePasswordAtLogon $true
- Changer un mot de passe d'administrateur
Pour changer le mot de passe de l'administrateur AD, tapez administrator lorsque vous êtes invité à saisir un nom d'utilisateur en utilisant le code ci-dessous :
$User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
Pour changer un mot de passe d'administrateur local, tapez administrator lorsque l'on vous demande un nom d'utilisateur :
$Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
- Modifiez l'attribut « password never expires »
Pour définir l’attribut « password never expires » sur un compte utilisateur local, utilisez Set-LocalUser :
$User = (Read-Host -Prompt "Username")
Set-LocalUser -Name $User -PasswordNeverExpires $true
Pour définir l'attribut « password never expires » sur un compte utilisateur Active Directory, utilisez Set-ADUser :
$User = (Read-Host -Prompt "Username")
Set-ADUser -Identity $User -PasswordNeverExpires $true
- Changez le mot de passe du compte de service
Pour modifier les propriétés de connexion d'un service, utilisez les cmdlets Get-Credential et Set-Service. Le code suivant change le service AppReadiness de l'utilisation du compte Système local à l'utilisation du nom d'utilisateur et du mot de passe saisis lors de l'invite. Notez que le paramètre Set-Service -Credential est pris en charge uniquement dans PowerShell 6 et ultérieur.
$credential = Get-Credential
Set-Service -Name "AppReadiness" -Credential $credential
- Modifier la date d'expiration d'un mot de passe dans Active Directory
Si vous devez prolonger la durée pendant laquelle un utilisateur peut conserver son mot de passe actuel, définissez l'attribut pwsLastSet à la date actuelle, ce qui leur donne du temps supplémentaire jusqu'à ce que Active Directory les oblige à changer leur mot de passe. Effacer l'attribut puis le définir à -1 le réglera à la date et à l'heure actuelles.
$Username = (Read-Host -Prompt "Username")
$User = Get-ADUser $Username -Properties pwdlastset
$User.pwdlastset = 0
Set-ADUser -Instance $User
$User.pwdlastset = -1
Set-ADUser -Instance $User
- Réinitialisation de mot de passe en masse
La meilleure façon d'inciter les utilisateurs à changer leur mot de passe AD est de forcer une réinitialisation du mot de passe. Vous pouvez le faire en masse en combinant les cmdlets Get-ADUser et Set-ADUser. La commande ci-dessous utilise un filtre pour obtenir les utilisateurs dans l'unité organisationnelle (OU) “Accounts” et redirige les résultats vers le cmdlet Set-ADUser pour forcer tous les utilisateurs de l'OU à changer leur mot de passe lors de la prochaine connexion.
Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Accounts,DC=ad,DC=contoso,DC=com" |
Set-ADUser -ChangePasswordAtLogon $true
Tester les identifiants d'un utilisateur
Si vous souhaitez tester si les identifiants d'un utilisateur fonctionnent, il vous suffit de démarrer un processus en utilisant son nom d'utilisateur et son mot de passe. Le code ci-dessous démarre cmd.exe en utilisant les identifiants saisis lors de la demande.
Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)
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
Gestion de la configuration pour un contrôle sécurisé des points de terminaison
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 ?