在PowerShell中获取Azure Active Directory密码到期日期

时间:2017-04-08 13:10:05

标签: powershell azure active-directory azure-active-directory

我正在使用Azure Active Directory,想知道用户密码何时到期。

目前我使用这些PowerShell命令成功连接到msol服务并获得密码到期,但我不太确定如何获取密码到期日期。

我正在使用Azure Active Directory PowerShell模块。

Connect-MsolService
    Get-MsolUser -UserPrincipalName 'Username' | Select PasswordNeverExpires

2 个答案:

答案 0 :(得分:1)

您正在寻找LastPasswordChangeTimestamp属性:

Get-MsolUser -UserPrincipalName 'Username' |Select LastPasswordChangeTimestamp

这只会告诉您密码上次更改的时间,而不会告诉您何时到期,所以也要从密码策略中获取密码有效期:

$PasswordPolicy = Get-MsolPasswordPolicy
$UserPrincipal  = Get-MsolUser -UserPrincipalName 'Username'

$PasswordExpirationDate = $UserPrincipal.LastPasswordChangeTimestamp.AddDays($PasswordPolicy.ValidityPeriod)

$PasswordExpirationDate现在应该有密码到期的时间戳

答案 1 :(得分:1)

Mathias R.Jessen说的是正确的。

但是,在某些情况下,例如租户具有多个域(每个域可以具有不同的密码策略),为单个用户设置了“密码永不过期”以及通过密码设置了“密码永不过期”时,您可能会获得不准确的数据政策。

下面的代码将帮助您获得正确的结果。

$Domains=Get-MsolDomain   #-Status Verified 
foreach($Domain in $Domains) 
{  
  $PwdValidity=(Get-MsolPasswordPolicy -DomainName $Domain).ValidityPeriod 
  $PwdPolicy.Add($Domain.name,$PwdValidity) 
}  
Get-MsolUser -All | foreach{ 
 $UPN=$_.UserPrincipalName 
 $PwdLastChange=$_.LastPasswordChangeTimestamp 
 $UserDomain= $UPN -Split "@" | Select-Object -Last 1  
 $PwdValidityPeriod=$PwdPolicy[$UserDomain] 
}

您可以从Microsoft的technet画廊下载脚本:https://gallery.technet.microsoft.com/Export-Office-365-Users-91b4fc50