2017-10-07 153 views
3

好的,所以我一直在这样做,现在我找不到解决此问题的实际工作。所以,我正在尝试创建一个脚本,这将使本地用户在下次登录时更改其密码。我看了看,看,看,但没有任何帮助。虽然我觉得我很接近但错过了一些东西。现在我会说我对一般的脚本非常非常陌生,如果我看起来很笨,我会很抱歉,但我很乐意帮助。此外,我正在使用Windows 10(不知道这是否会有所作为)。我也是为一个学校作业创作这个作品的,我确实要求我的老师帮忙,但是我已经听到了一个星期的感觉。谢谢!VBscript,这将使本地用户在下次登录时更改密码

现在,这里是我:

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

现在,我知道,也许在那里说/客户,用户可能是不正确的,但我一直在使用我的帐户,这是管理也试过,甚至似乎无所事事。

这是当我运行它(通过命令提示符现在,我跑的一切)

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


c:\Comp230> 

现在,这对我来说发生的事情表明它跑了,但是当我去测试,看看它是否工作良好什么都没发生。

我会说我已经尝试了其他方式的脚本编写这部分,如替换usr.Put objUser.Put等,我会喜欢任何输入,我可以得到,因为这是令人沮丧的。

回答

1

如果设置了Password Never Expires标志,则需要先将其删除才能使密码过期。

请尝试以下内容。

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 

如果已设置,您可能还需要删除User Cannot Change Password标志。

+0

工作。现在我想要做的另一件事是让用户在30天后必须更改密码。有没有办法做到这一点本地用户或只有当你有权访问活动目录? –

相关问题