Powershell 到期日期计算错误的天数

时间:2021-07-20 12:54:23

标签: powershell

大家早上好,

我遇到了 Bradley Wyatt 创建的脚本的一个问题,它应该通知用户他们的密码即将到期,但它跳过了一些用户,如以下示例所示:

>C:\Users\> net user USER /domain
>Password expires             7/9/2021 8:20:25 AM

但在脚本中:

<块引用> 07/19/2021 08:00:02 - 信息:用户名密码未过期 19天

这是脚本的魅力:

$users = Get-Aduser -properties Name, PasswordNeverExpires, PasswordExpired, PasswordLastSet, EmailAddress -filter { (Enabled -eq 'True') -and (PasswordNeverExpires -eq 'False') } | Where-Object { $_.PasswordExpired -eq $False }

$maxPasswordAge = (Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge

 #Get Password last set date
$passwordSetDate = (Get-ADUser $user -properties * | ForEach-Object { $_.PasswordLastSet })
#Check for Fine Grained Passwords
$PasswordPol = (Get-ADUserResultantPasswordPolicy $user)
if (($PasswordPol) -ne $null) {
    $maxPasswordAge = ($PasswordPol).MaxPasswordAge
}

$expireson = $passwordsetdate + $maxPasswordAge
$today = (get-date)
#Gets the count on how many days until the password expires and stores it in the $daystoexpire var
$daystoexpire = (New-TimeSpan -Start $today -End $Expireson).Days


If (($daystoexpire -ge "0") -and ($daystoexpire -lt $expireindays)) {
    "$Date - INFO: Sending expiry notice email to $Name" | Out-File ($DirPath + "\" + "Log.txt") -Append
    Write-Host "Sending Password expiry email to $name" -ForegroundColor Yellow

    $SmtpClient = new-object system.net.mail.smtpClient
    $MailMessage = New-Object system.net.mail.mailmessage

你们能明白我遗漏了什么吗?

1 个答案:

答案 0 :(得分:1)

对不起,麻烦团队,但我的一位手快的同事在没有报告我的情况下更改了 DC 中的最大密码年龄。谢谢

<块引用>

强制执行密码历史记录 记住 5 个密码 密码最长使用期限 60 天 密码最短使用期限 5 天 最短密码长度 14 个字符 密码必须满足复杂性 要求 启用 使用可逆加密存储密码 已禁用