首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我正在编写一个powershell脚本,以使所有密码在14天内过期的用户都能使用,但是它从超过14天的时间开始。为什么?

我正在编写一个powershell脚本,以使所有密码在14天内过期的用户都能使用,但是它从超过14天的时间开始。为什么?
EN

Stack Overflow用户
提问于 2022-02-17 16:29:21
回答 1查看 39关注 0票数 0
代码语言:javascript
运行
复制
Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} –Properties "DisplayName", "samaccountname", "PasswordNeverExpires", "PasswordLastSet", "PasswordExpired", "GivenName", "SurName", "EmailAddress", "lastlogon", "msDS-UserPasswordExpiryTimeComputed" | Select-Object -Property "Displayname", "samaccountname", "PasswordNeverExpires", "PasswordLastSet", "PasswordExpired", "GivenName", "SurName", "EmailAddress", "LastLogon", "msDS-UserPasswordExpiryTimeComputed",@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed").ToShortDateString()}} | Where {($_.ExpiryDate -le $date.adddays(14).ToShortDateString()) -and ($_.ExpiryDate -ge $date.adddays(0).ToShortDateString())}

这是一个截图,它是为到期日期输出的。它不应该超过3/03/22,但我看到的是3月14日。我不知道为什么没有正确地应用Where约束。

代码语言:javascript
运行
复制
`Get-ADUser 
-filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} 
–Properties "DisplayName", "samaccountname", "PasswordNeverExpires", "PasswordLastSet", "PasswordExpired", "GivenName", "SurName", "EmailAddress", "lastlogon", "msDS-UserPasswordExpiryTimeComputed" 
| Select-Object -Property "Displayname", "samaccountname", "PasswordNeverExpires", "PasswordLastSet", "PasswordExpired", "GivenName", "SurName", "EmailAddress", "LastLogon", "msDS-UserPasswordExpiryTimeComputed",
@{Name="ExpiryDate";
Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} 
| Where {($_.ExpiryDate -le $date.adddays(14)) 
-and ($_.ExpiryDate -ge $date.adddays(0))}`

按照Theo关于不使用字符串比较的建议,该命令按预期的方式工作。非常感谢西奥。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-07 18:00:50

由于在我的帖子下面的评论,我能够纠正这个查询并使它正常工作。

转换为字符串的原因是,当我从ADUser中提取到期日期时,它是使用以FileTime格式出现的,当时我不确定如何处理它,所以我已经将它转换为DateTime。然后到了一根绳子,认为这会更容易处理。西奥指出的情况并非如此。

我也继续问我的问题,但并不是所有的问题都在同一条线上。

代码语言:javascript
运行
复制
Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False -and samaccountname -notlike 'iss*'}`
 –Properties "DisplayName", "samaccountname", "PasswordNeverExpires", "PasswordLastSet", "PasswordExpired", "GivenName", `
 "SurName", "EmailAddress", "lastlogon", "Department", "msDS-UserPasswordExpiryTimeComputed" `
 | Select-Object -Property "Displayname", "samaccountname", "PasswordNeverExpires", "PasswordLastSet", "PasswordExpired", "GivenName", "SurName", `
 "EmailAddress", "LastLogon", "Department", "msDS-UserPasswordExpiryTimeComputed",@{Name="ExpiryDate";`
 Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} `//this was the location of the initial conversion to String that led me to think to the conversion had to take place
 | Where {($_.ExpiryDate -le $date.adddays(14)) -and ($_.ExpiryDate -ge $date.adddays(0))} `

虽然这里的翻译还不太好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71161894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档