【问题标题】:Powershell to get accounts with passwords older than "$"Powershell 获取密码早于“$”的帐户
【发布时间】:2017-12-16 14:10:20
【问题描述】:

我正在尝试获取密码早于 90 天的帐户列表,但有些东西不能正常工作,我不知道为什么。

Get-ADUser -Filter 'Enabled -eq $True' -Properties PasswordLastSet,samaccountname,passwordlastset | Where-Object {$_.PasswordLastSet -gt ($_.PasswordLastSet).adddays(1)} | select Name,samaccountname,passwordlastset

这是我到目前为止得到的,但如果我按原样运行它,它会返回 0 个结果。我知道有超过一天的密码,我的就是其中之一。任何帮助表示赞赏。

【问题讨论】:

  • 您需要通过 adddays(-90) 减去天数
  • 是的,并使用今天的日期而不是密码到期日。只需要再醒来一点。感谢您让我走上正轨

标签: powershell active-directory


【解决方案1】:

根据您在 cmets 中的认识,您应该将 PasswordLastSet 字段与今天的日期减去 90 天进行比较,如下所示:

Get-ADUser -Filter 'Enabled -eq $True' -Properties PasswordLastSet | Where-Object {$_.PasswordLastSet -lt (Get-Date).adddays(-90)} | select Name,SamAccountName,PasswordLastSet

对旧密码使用-lt,对新密码使用-gt

【讨论】:

  • 可以将密码年龄检查放入-Filter 并完全避免Where-Object。然后Properties 也可能是不必要的(或者至少这是我对工作中所做事情的回忆[我现在在家,无法检查我的代码])。
  • @JeffZeitlin 可能是错误的,但我认为需要指定 PasswordLastSet
  • 我实际上最初尝试过 filter 但遇到了麻烦,因为 filter 似乎表现得好像它们是字符串。我确信有一种方法,我只是不知道语法,但经过几次尝试后,我选择了我所知道的普遍适用的方法。
【解决方案2】:

你可以试试这个,如果你想导出删除#

$DaysAgo=(Get-Date).AddDays(-90)
$params = @{
  "filter" = 'Enabled -eq $true -and passwordlastset -lt $DaysAgo'
  "Properties" = "Displayname",
  "passwordlastset",
  "samaccountname"
}
Get-ADUser @params |select displayname,samaccountname,passwordlastset #| export-csv C:\result.csv -nti

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2017-12-17
    • 2021-10-26
    • 2015-05-01
    • 2021-11-06
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多