如何查找自创建日期起90天后过期的帐户

时间:2015-04-24 20:03:52

标签: date powershell timestamp creation datecreated

我正在尝试查找AD中的所有临时帐户,该帐户在帐户创建后的90天后到期。这是我到目前为止所拥有的。我不知道如何计算。我没有收到任何输出。

    $expireDate = (Get-ADUser -filter * -Properties accountExpires).accountExpires
$accountExpireDate = ([System.DateTime]::FromFileTime($expireDate)).AddDays(-90).Date

Get-ADUser -Filter {whenCreated -ge $accountExpireDate} -Properties whenCreated | select name | export-csv 'c:\temp\all_temp_users.csv'enter code here

1 个答案:

答案 0 :(得分:0)

以下命令将在PowerShell v3中返回user1和user2的ADUser对象,但在powershell v2中返回null

(@("user1", "user2") | Get-ADUser).Name

如果您使用的是powershell v2,我建议您尝试将命令更改为:

Get-ADUser -filter * -Properties accountExpires | Select -ExpandProperty AccountExpires

这将返回一个AccountExpires属性数组

另一个问题是你实际上是在插入一个可能的数组

[System.DateTime]::FromFileTime($expireDate)

$ expireDate是可能的数组。我相信这只会为数组的第一个元素返回一个时间。

另一个可能的问题可能是您正在检查whenCreated是否大于到期日期。通常这个日期将小于。如果您正在寻找已过期的帐户,我会做同样的事情:

$users = Get-ADUser -filter * -Properties AccountExpires, WhenCreated
foreach ( $user in $users ) {
    $span = [DateTime]::FromFileTime($user.AccountExpires) - $user.WhenCreated

    if ( $span.Days -eq 90 ) { 
        # Do Something with user that was set to expire 90 days
    }
}