我知道我可以看到我们内部 Active Directory 的密码日期(上次更改日期、密码过期日期等)。如何使用 PowerShell 或其他方式查看 Office 365 帐户的此信息?有时拥有这些信息非常方便。我特别需要查看人们的密码何时更改。
谢谢,乔诺
答案1
我想我已经知道了,或者至少我有足够的知识来弄清楚我需要什么。
Get-MsolUser -userprincipalname [email protected] | select DisplayName, LastPasswordChangeTimeStamp,@{Name=”PasswordAge”;Expression={(Get-Date)-$_.LastPasswordChangeTimeStamp}}
结果如下所示(日期和时间格式将与您的计算机的格式相匹配):
DisplayName LastPasswordChangeTimestamp PasswordAge
----------- --------------------------- -----------
User, Name 09-Mar-16 5:48p 42.22:34:10.6964630
。
为了查看密码超过 30 天的所有用户,请使用此功能。
Get-MsolUser -All | select DisplayName, LastPasswordChangeTimeStamp,@{Name=”PasswordAge”;Expression={(Get-Date)-$_.LastPasswordChangeTimeStamp}} | where {$_.PasswordAge -gt “30”} | sort-object PasswordAge -descending
它将列出所有密码使用时间超过 30 天的用户,并按密码使用期限对列表进行排序。
我希望这也能帮助其他人。
答案2
想在这里分享一下。
该脚本生成7个不同的Office 365密码报告。
https://o365reports.com/2020/02/17/export-office-365-users-last-password-change-date-to-csv/
使用此脚本,您可以生成以下密码报告。
- 密码到期日报告
- 密码最后更改日期报告
- 密码过期用户报告
- 密码永不过期用户报告
- 即将到期密码用户报告
- 最近密码更改的用户报告
- 授权用户的密码报告
答案3
要正确计算针对 UTC 时间的年龄,您可以使用 ToUniversalTime() 方法。
Get-MsolUser -All | select DisplayName, LastPasswordChangeTimeStamp,@{Name=”PasswordAge”;Expression={((Get-Date).ToUniversalTime())-$_.LastPasswordChangeTimeStamp}} | sort-object PasswordAge -desc