2017-10-07 8 views
3

Ok, donc je suis allé à ce moment pour toujours maintenant et je ne trouve pas de réponses à ce qui fonctionne réellement. Ainsi, j'essaye de créer un manuscrit qui fera changer un utilisateur local leur mot de passe lors de la prochaine ouverture de session. J'ai regardé et regardé et regardé, mais rien n'aide. Même si j'ai l'impression d'être proche mais de manquer quelque chose. Maintenant, je vais dire que je suis très, très nouveau pour les scripts en général, désolé si je semble stupide, mais j'adorerais l'aide. En outre, j'utilise Windows 10 (pas sûr si cela fera une différence). Je crée aussi ceci pour une tâche d'école et j'ai demandé un coup de main à mon professeur, mais ça fait un sens à la semaine que j'ai entendu quelque chose. Je vous remercie!VBscript, qui va faire un utilisateur local changer leur mot de passe lors de la prochaine connexion

Maintenant, voici ce que j'ai:

strComputer = "LAPTOP-56BDJGPQ" 
Set usr = GetObject("WinNT://LAPTOP-56BDJGPQ/Guest,user") 
usr.Put "PasswordExpired", 1 
usr.SetInfo 

Maintenant, je sais que peut-être où il est dit/invité, l'utilisateur peut être incorrect, mais je l'ai aussi essayé d'utiliser mon compte qui est l'administrateur, même qui semblent ne rien faire.

Voici ce qui se passe quand je le lance (maintenant, je lance tout à travers l'invite de commande)

c:\Comp230>cscript USER_Logon_reset.vbs 
Microsoft (R) Windows Script Host Version 5.812 
Copyright (C) Microsoft Corporation. All rights reserved. 


c:\Comp230> 

Maintenant, cela me montre qu'il a couru, mais quand je vais tester pour voir si elle a bien fonctionné Rien ne se passe.

Je dirai que j'ai essayé d'autres manières de scripter cette partie comme le remplacement d'usr.Put à objUser.Put, etc. J'aimerais n'importe quelle entrée que je pourrais obtenir parce que c'est frustrant.

Répondre

1

Si le fanion Password Never Expires est défini, vous devez d'abord le supprimer pour que le mot de passe expire.

Essayez plutôt ce qui suit.

Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000 ' 65536 

Set usr = GetObject("WinNT://LAPTOP-56BDJGPQ/JohnDoe,user") 
currentFlags = usr.Get("UserFlags") 

'check if "password never expires" flag is set. if so, remove it 
If currentFlags And ADS_UF_DONT_EXPIRE_PASSWD Then 
    newFlags = currentFlags - ADS_UF_DONT_EXPIRE_PASSWD 
    'setting new flags 
    usr.Put "UserFlags", newFlags 
End If 
usr.Put "PasswordExpired", 1 
usr.SetInfo 

Vous devrez peut-être enlever le drapeau User Cannot Change Password si elle est définie.

+0

Cela a fonctionné. Maintenant, une autre chose que j'essaie de faire est de faire en sorte que l'utilisateur après 30 jours doit changer son mot de passe. existe-t-il un moyen de le faire pour un utilisateur local ou seulement si vous avez accès au répertoire actif? –