代码之家  ›  专栏  ›  技术社区  ›  jsc

Powershell创建密码过期报告

  •  1
  • jsc  · 技术社区  · 7 年前

    我正在尝试创建一个每周运行一次的密码过期报告,我想一次抓取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
    
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   postanote    7 年前

    如何利用这一点,并根据需要进行调整。

    密码过期报告和用户通知Powershell脚本

    该脚本的原始部分归Martin Pugh所有 (www.thesurlyadmin.com)。我刚把原稿清理干净,加了一些 更奇特的电子邮件通知,并添加了一些附加功能。你 可以将此脚本配置为计划任务,以同时获取 用户

    https://gallery.technet.microsoft.com/scriptcenter/Password-Expiration-Report-478037a5

    推荐文章