Magic Quadrant™ pour la gestion des accès privilégiés 2025 : Netwrix reconnue pour la quatrième année consécutive. Téléchargez le rapport.

Plateforme
Centre de ressourcesBlog
Comment créer, modifier et tester des mots de passe en utilisant PowerShell

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

Asset Not Found

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).