我正在尝试创建一个每周运行一次的密码过期报告,我想一次抓取7天。
我目前正在创建的脚本似乎没有做到这一点。我得到了今天和回来的一切,但没有第二天,更不用说7天了。我相信我没有选择正确的日期,但我不知道该怎么做。我试着问别人,用谷歌搜索我的问题,但没有找到办法。
我知道我可能在这里留下了“-2”,但那是为了测试它。一切正常,直到“?”如果我没有“-或”,那么我会得到一个空值,所以where对象中的某些内容不起作用
电子邮件发送也很好。
[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
}