我正在尝试创建一个每周运行一次的密码到期报告,我想一次抓住7天。
我一直在创建的当前脚本似乎并没有这样做。我得到了今天和回来的一切,但从来没有第二天,更不用说7天了。我相信我没有拉正确的日期,但我不知道该怎么做。我试过问别人并搜索我的问题,但没找到办法。
我知道我可能在这里留下了“-2”,但那是为了测试它。一切正常,直到“?”如果我没有“-or”,那么我得到一个Null,所以where-object中的某些东西不起作用
电子邮件发送也很好。
[cmdletbinding()]
Param (
[parameter(DontShow = $true)]
$SmartHost = 'smtpserver.company.com',
[parameter(DontShow = $true)]
$SendTo = 'someone',
[parameter(DontShow = $true)]
$SendFrom = "me",
[parameter(DontShow = $true)]
$MailSubject = "Daily Password Expiry Report"
)
process {
Write-Verbose -Message "Collecting data..."
$mailBody = ((Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False -and PasswordLastSet -gt 0} -Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" | Sort msDS-UserPasswordExpiryTimeComputed |
Select-Object -Property "Displayname",@{Name="ExpiryDate";Expression={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}})|
? {($_.expiryDate -eq (Get-Date).AddDays(-2) -or $_.expiryDate -lt (Get-Date)) }| Out-String)
}
end {
Write-Verbose -Message "Sending Mail..."
Send-MailMessage -Subject $mailSubject -From $sendFrom -To $sendTo -SmtpServer $smartHost -body $mailBody
}
如何利用这个和根据需要调整。
密码过期报告和用户通知Powershell脚本
该脚本的原始部分归功于Martin Pugh(www.thesurlyadmin.com)。我刚刚清理了原始文件并添加了一些更好的电子邮件通知并添加了一些额外的功能。您可以将此脚本配置为计划任务,以获取用户的报告
https://gallery.technet.microsoft.com/scriptcenter/Password-Expiration-Report-478037a5