MSDN Forum - 获取Office 365用户的密码过期时间

博客地址:http://blog.csdn.net/FoxDave

提问者希望获取Office 365用户的密码过期时间并显示在它们的公司主页上,想要用客户端脚本或Microsoft Graph实现,但遗憾的是他没有查到相关的资料,想到论坛里来问问大家看能不能实现。

Hi there,

I came with the requirement that to retrieve the expiration date of office 365 users and show them alert in our organisation home screen.I found some samples on c # and power-shell But I need client side scripting.And also explored on Microsoft Graph API i unable to find a property which relates to password expiration values.Let me know it could possibly can achieve through client side scripting or not…?

Regards

Akin.

答案是不能的,客户端脚本或Microsoft Graph目前并没有支持获取用户密码过期时间的接口,一般需要通过PowerShell去获取。

具体说明如何去用PowerShell获取之前,我们先讲一下关于Office 365中的用户安全方面的内容。

实际上,Office 365是有密码策略的,通过密码策略可以设置Office 365中用户的密码过期时间和提前多长时间进行提醒,自带邮件提醒功能。用管理员访问Office 365的管理主页,点击Settings下面的Security & privacy,在这里可以设置密码策略。
MSDN Forum - 获取Office 365用户的密码过期时间_第1张图片
密码过期时间的范围为14-730之间的数值,密码过期之前的提醒天数为1-30之间的数值。

那么如何通过PowerShell去获取指定用户的密码过期时间呢?
用管理员打开PowerShell,如果没有安装过MSOnline的组件,请先执行命令Install-Module MSOnline

打开一个记事本,输入如下脚本:

$cred = Get-Credential
 
Connect-MsolService -Credential $cred
 
$domain = Get-MsolDomain | ? {$_.IsDefault -eq $true}
 
$pwdPolicy = Get-MsolPasswordPolicy -DomainName $domain.Name
 
$account = "[email protected]"
 
$user  = Get-MsolUser -UserPrincipalName $account
 
$user| fl PasswordNeverExpires
 
$pwdExpirationDate = $user.LastPasswordChangeTimestamp.AddDays($pwdPolicy.ValidityPeriod)
 
Write-host "Password will expire on : $pwdExpirationDate"
 
$startDate = (GET-DATE)
$daysLeft = NEW-TIMESPAN -Start $startDate -End $pwdExpirationDate
$daysLeft = [math]::Floor($daysLeft.TotalDays)
 
Write-host "Password will Expire on"$daysLeft" Days."

pause

记得将$account改为要获取的用户的账号,然后将文本保存为test.ps1。
右键脚本文件,选择以PowerShell运行,在执行策略提示处输入A或Y,然后输入具有管理员权限的Credential信息。
MSDN Forum - 获取Office 365用户的密码过期时间_第2张图片
现在让我们来稍微扩展一下,如果我们想获得所有用户的密码过期时间,并输出成CSV文件以方便我们查看,可以使用下面的代码:

$cred = Get-Credential
 
Connect-MsolService -Credential $cred
 
$domain = Get-MsolDomain | ? {$_.IsDefault -eq $true}
 
$pwdPolicy = Get-MsolPasswordPolicy -DomainName $domain.Name

Get-MsolUser | select DisplayName, LastPasswordChangeTimeStamp,@{Name=”PasswordPeriod (Day.Hour.Minute.Second)”;Expression={((Get-Date).ToUniversalTime())-$_.LastPasswordChangeTimeStamp}}, @{Name=”PasswordExpirationDate”;Expression={$_.LastPasswordChangeTimestamp.AddDays($pwdPolicy.ValidityPeriod)}} | sort-object PasswordExpirationDate | Export-Csv D:\userPwdExpirationInfo.csv

pause

MSDN Forum - 获取Office 365用户的密码过期时间_第3张图片
在这里插入图片描述

你可能感兴趣的:(Microsoft,365)