编辑** 我正在考虑在每个工作日结束时运行一个计划任务,以检索所有从未登录过的帐户并禁用他们的帐户。请原谅任何语法错误。我可能在这里摸索得很厉害。有人能说说这个解决方案是否有效吗?
get-aduser -f {-not ( lastlogontimestamp -like "*")} | Disable-ADAccount
原始问题**
我不是系统管理员,我更像是一名程序员,对 Active Directory 和 Powershell 脚本编写还不熟悉。我曾用 Bash 和其他语言编写过脚本,因此我能够很快掌握。
我目前的角色(我是新来的)有一个行业标准,如果首次使用的密码在 24 小时内没有使用,则帐户将过期/禁用。我进行了搜索,发现 AD 不支持此功能,但了解到通过脚本可能可以实现此功能。审计的期限很紧迫,我必须说我们有点绝望。
任何帮助都将不胜感激,即使只是关于设置到期时间或识别尚未更改密码的帐户的可能方法的背景知识。
非常感谢
答案1
是的,你的一行代码应该可以工作。我修改了你的原始命令,使其仅筛选已启用的帐户。
Get-ADuser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | Disable-ADAccount
答案2
您可以检查以下属性来查找用户帐户是否已登录或更改密码。
上次登录日期上次设置密码
get-aduser -identity ACCOUNTNAME -properties LastLogonDate,PasswordLastSet
答案3
Active Directory 没有办法设置单个帐户的密码过期时间。当密码过期时,它会检查帐户的Pwd-Last-Set 属性反对全球最大密码年龄环境。
如果您使用某种脚本流程来创建用户帐户,我会执行以下操作:
- 修改用户创建脚本以附加到用户名和Pwd-Last-Set时间戳列表。
- 创建一个沿列表迭代的计划任务。如果帐户上的 Pwd-Last-Set 时间戳与文件中的相同(即他们没有更改密码)并且文件中的时间戳早于 24 小时,则将帐户上的 Pwd-Last-Set 属性设置为 0,并在需要时取消设置不过期标志。这将立即使密码过期。
答案4
为了简单起见,有没有办法简单地检查密码是否从未更改过?这样,我就可以在一天结束时运行计划任务,禁用具有此属性的任何帐户?– Jacksgrin
Created
我发现这个问题已经很老了,但是,比较或属性的值CreatedTimeStamp
以及PasswordLastSet
属性应该是一个开始。
get-aduser -identity [accountname] -properties Created,CreatedTimeStamp,PasswordLastSet,LastLogonDate
这将向您显示帐户密码自帐户创建以来是否曾经更改过。
仅供参考,我无法发表评论,否则我会回复他的评论。