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

问题描述 投票:0回答:3

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

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

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

Connect-MsolService
    Get-MsolUser -UserPrincipalName 'Username' | Select PasswordNeverExpires
powershell azure active-directory azure-active-directory
3个回答
4
投票

您正在寻找

LastPasswordChangeTimestamp
属性:

Get-MsolUser -UserPrincipalName 'Username' |Select LastPasswordChangeTimestamp

这只会告诉您密码上次更改的时间,而不是密码过期的时间,因此还要从密码策略中获取密码有效性:

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

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

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


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


0
投票

使用

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
© www.soinside.com 2019 - 2024. All rights reserved.