您好,GB。您知道,政治家有一点不讨人喜欢,就是不管什么时候您问他们问题,许多政治家都是答非所问。更糟糕的是,如果您对此质问,他们会告诉您他们有充分理由这样做:毕竟,这是为了您好。
这和嗨,脚本专家!专栏有什么关系?嗯,我们将回答不同的问题,而不是您所问的问题。但是别担心:这是为了您好。
那么,为什么这是为了您好呢?因为我们假定您要使用户密码过期的原因只有一个:您想要该用户在下次登录时必须更改密码。您不会为了防止用户登录而使密码过期;如果您不想某个用户登录,应该禁用或删除该用户帐户。我们想强制某个用户在下次登录时更改密码,因而除了更改密码过期日期,还有更容易的方法。您只需运行这个小脚本:
Set objUser = GetObject("LDAP://CN=myerken,OU=Finance,DC=Fabrikam,DC=com")
objUser.pwdLastSet = 0
objUser.SetInfo
没错:确实没有多少工作要做,是吧?我们首先绑定到 Active Directory 中的用户帐户;这就是下面这行代码要完成的任务:
Set objUser = GetObject("LDAP://CN=myerken,OU=Finance,DC=Fabrikam,DC=com")
完成后,将 pwdLastSet 属性值设置为 0。pwdLastSet 是用于存储上次设置给定帐户密码的日期和时间的属性。如果 pwdLastSet 等于 0,则用户只能在下次登录时更改密码,别无选择。换句话说,不需要浪费时间考虑日期和时间,我们实质上已经使密码“过期”:他们在下次登录时必须更改当前密码。将 pwdLastSet 设置为 0,然后调用 SetInfo 方法将所做更改写回 Active Directory。
顺便说一下,您可以使用类似下面这个脚本对本地用户帐户执行同类操作:
strComputer = "atl-win2k-01"
Set objUser = GetObject("WinNT://" & strComputer & "/kenmyer")
objUser.PasswordExpired = 1
objUser.SetInfo
在这个脚本中,我们绑定到计算机 atl-win2k-01 上的 Ken Myer 帐户,然后将 PasswordExpired 属性值设置为 1。我们调用 SetInfo 方法,然后最终结果就是:Ken Myer 下次登录到此计算机时必须更改密码。
到此您已得到了答案:我们回答了一个问题,即使与所问的问题可能不完全一致。希望这会有所帮助:上次我们答非所问是关于 SAT 测试。那个问题解决得不太好。