Comment puis-je modifier le mot de passe d'un utilisateur ?

S'il vous plaît Monsieur Script...

Hey, Scripting Guy!

Bienvenue dans cette nouvelle section TechNet, dans laquelle le Monsieur Script de Microsoft répond aux questions récurrentes sur les scripts d'administration système. Vous avez une question sur les scripts d'administration système ? Envoyez un courrier électronique à scripter@microsoft.com. Nous ne pourrons peut-être pas répondre à toutes les questions qui nous parviennent, mais nous ferons de notre mieux pour satisfaire votre demande.

Question du jour : comment puis-je modifier le mot de passe d'un utilisateur ?

Comment puis-je modifier le mot de passe d'un utilisateur ?Comment puis-je modifier le mot de passe d'un utilisateur ?

S'il vous plaît Monsieur Script... Comment puis-je modifier le mot de passe d'un utilisateur à l'aide d'un script ?

-- GO

Bonjour GO. Vous n'avez pas précisé si vous souhaitiez modifier le mot de passe d'un utilisateur local ou d'un utilisateur d'Active Directory. Ce n'est pas grave, les processus sont tellement similaires que nous allons les aborder tous les deux. C'est un peu comme obtenir deux réponses de Monsieur Script pour le prix d'une !

Que vous souhaitiez modifier le mot de passe d'un utilisateur local ou d'un utilisateur d'Active Directory, vous devez suivre une procédure en deux étapes. Vous devez d'abord vous lier au compte de l'utilisateur concerné, puis utiliser la méthode SetPassword d'ADSI pour lui attribuer un nouveau mot de passe. C'est tout. En deux petites étapes, tout est fini.

Pour vous le prouver, modifions, par exemple, le mot de passe d'un utilisateur local. Dans le script suivant, nous nous lions au compte d'utilisateur kenmyer sur l'ordinateur atl-ws-01 et attribuons à Ken le mot de passe i5a2sj*! :

Set objUser = GetObject("WinNT://atl-ws-01/kenmyer")
objUser.SetPassword("i5A2sj*!")

Le script est aussi simple que ça : se lier au compte d'utilisateur, appeler la méthode SetPassword et définir le nouveau mot de passe de l'utilisateur. La seule chose à laquelle vous devez faire attention, c'est le format du nom du fournisseur. Vous devez taper WinNT, en mettant les lettres W et NT en majuscules. Si vous ne respectez pas cette casse (si vous tapez, par exemple, winnt), le script échoue. C'est l'une des rares situations où le respect de la casse est important dans VBScript. À part ça, le script est très simple.

Bien sûr, vous pouvez penser que nous avons d'abord présenté un script pour un utilisateur local parce que les comptes d'utilisateurs locaux sont simples par rapport aux comptes d'utilisateurs d'Active Directory. Vous attendez de voir comment nous allons nous y prendre pour modifier le mot de passe d'un compte d'utilisateur d'Active Directory. Eh bien, voici un script qui modifie le mot de passe du compte d'utilisateur kenmyer dans le domaine fabrikam.com :

Set objUser = GetObject("LDAP://cn=KenMyer,ou=Finance,dc=fabrikam,dc=com")
objUser.SetPassword("i5A2sj*!") 

En effet, ce script ressemble beaucoup à celui utilisé pour la modification du mot de passe d'un utilisateur local. La seule différence réside dans le fait que nous utilisons le fournisseur LDAP pour nous lier au compte d'utilisateur (LDAP est utilisé avec Active Directory et WinNT avec les comptes locaux et les domaines Windows NT 4.0). Évidemment, le chemin d'accès au compte varie selon que le compte est stocké localement ou dans Active Directory. Sinon, les deux scripts sont identiques.

Avec ces scripts, vous pouvez modifier tous les comptes d'utilisateurs, y compris celui de l'administrateur local. Il vous suffit de remplacer kenmyer par Administrator :

Set objUser = GetObject("WinNT://atl-ws-01/Administrator")
objUser.SetPassword("i5A2sj*!")

Tant que nous y sommes, abordons une troisième question. On nous demande souvent comment modifier le mot de passe de l'administrateur local sur tous les ordinateurs d'une unité d'organisation. Eh bien, voici la réponse :

Set objOU = GetObject("LDAP://OU=Finance, DC=fabrikam, DC=com")
objOU.Filter = Array("Computer")

For Each objItem in objOU
    strComputer = objItem.CN
    Set objUser = GetObject("WinNT://" & strComputer & "/Administrator")
    objUser.SetPassword("i5A2sj*!")
Next

Mais, que faisons-nous dans ce script ? En fait, nous nous lions à l'unité d'organisation Finance du domaine fabrikam.com. Nous appliquons ensuite un filtre au résultat obtenu pour ne traiter que les comptes d'ordinateurs. Nous passons en revue les comptes d'ordinateurs. Nous prenons le CN (principalement le nom NetBIOS) du premier ordinateur et stockons son nom dans la variable strComputer. Nous nous connectons ensuite au compte de l'administrateur sur cet ordinateur et modifions son mot de passe. Le script répète le processus en boucle pour le deuxième ordinateur en changeant son mot de passe et ainsi de suite pour tous les ordinateurs de l'unité d'organisation.

Ne vous inquiétez pas. Nous n'irons pas dire à votre patron à quel point c'est facile. Laissez-le penser que vous êtes un génie lorsque vous lui direz que vous avez trouvé le moyen de modifier automatiquement tous les mots de passe de l'administrateur local sur tous les ordinateurs d'une unité d'organisation. Le fait que ça ne requiert que quelques simples lignes de code restera entre nous. (Croyez-nous, nous n'avons jamais dit non plus à notre patron à quel point c'était simple !)

Pour en savoir plus

Consultez les archives de S'il vous plaît Monsieur Script...