如果用户密码已过期,Office 365(管理中心或 Powershell)会告诉我吗?

Will Office 365 (Admin center or Powershell) tell me if a user's password is expired?

我觉得这个问题以前一定有人问过,但我在这里和其他地方花了太多时间搜索它。

我正在寻找可以告诉我用户密码已过期的信息。当我搜索这个时,我得到大量网站告诉我如何将用户密码设置为永不过期或如何设置密码策略。我只想能够在管理中心查找用户或使用 PowerShell 查看密码是否已过期。

我目前使用这个 cmdlet 作为解决方法,但如果我可以让它告诉我 "Password Expired: Yes" 或类似的东西,那就容易多了。

Get-MsolUser -SearchString (Read-Host `n Whose info?) | select DisplayName, LastPasswordChangeTimeStamp, @{Name=”PasswordAge (in days.time)”;Expression={(Get-Date)-$_.LastPasswordChangeTimeStamp}}, PasswordNeverExpires | fl

谢谢!

2016 年 8 月 4 日根据以下 Junaid 建议的答案进行编辑:

我更改了脚本以允许搜索、垂直间距以及 PasswordNeverExpires = TRUE 的帐户。希望对你有帮助。

$valid = Get-MsolPasswordPolicy -DomainName domain.com | select ValidityPeriod -ExpandProperty ValidityPeriod

Get-MsolUser -SearchString (Read-Host `n Whose info?) | Select DisplayName, LastPasswordChangeTimeStamp, PasswordNeverExpires | foreach{ 
 $user = $_.DisplayName
 $exp = $_.LastPasswordChangeTimeStamp.addDays($valid)
 If ($_.PasswordNeverExpires -eq $TRUE){
 $exp = "Never"
 }
 Write-Output "$user's Password Expiration: $exp"
}
Write-Output `n

你可以这样实现。首先获取域的密码策略并将 ValidityPeriod 保存到变量中。然后获取所有用户及其上次密码更改时间戳,为其添加有效期,密码到期日期。

 $valid = Get-MsolPasswordPolicy -DomainName yourdomain.com | select ValidityPeriod -ExpandProperty ValidityPeriod

现在我们在 $valid 变量中有了有效期。

 Get-MsolUser -All | Select UserPrincipalName, LastPasswordChangeTimeStamp | foreach{ 
 $user = $_.UserPrincipalName
 $exp = $_.LastPasswordChangeTimeStamp.addDays($valid)
 Write-Output "$user's password expires on $exp"
}

我 运行 这是在连接了 Msol 服务的 powershell 会话中。所以希望对你有帮助。