我正在使用 Azure Active Directory,想知道用户的密码何时过期。
目前我使用这些 PowerShell 命令成功连接到 msol 服务并获取密码到期日期,但我不太确定如何获取密码到期日期。
我正在使用 Azure Active Directory PowerShell 模块。
Connect-MsolService
Get-MsolUser -UserPrincipalName 'Username' | Select PasswordNeverExpires
您正在寻找
LastPasswordChangeTimestamp
属性:
Get-MsolUser -UserPrincipalName 'Username' |Select LastPasswordChangeTimestamp
这只会告诉您密码上次更改的时间,而不是密码过期的时间,因此还要从密码策略中获取密码有效性:
$PasswordPolicy = Get-MsolPasswordPolicy
$UserPrincipal = Get-MsolUser -UserPrincipalName 'Username'
$PasswordExpirationDate = $UserPrincipal.LastPasswordChangeTimestamp.AddDays($PasswordPolicy.ValidityPeriod)
$PasswordExpirationDate
现在应该有密码过期的时间戳
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
使用
Get-ADUser
,我发现这是一个更简单的方法:
az login -u [email protected]
$identity="someuser"
Get-ADUser -identity $identity -Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" | Select-Object -Property @{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} | Select-Object -ExpandProperty ExpiryDate -OutVariable expiryDate