我有以下代码:
Search-ADAccount -AccountExpiring -TimeSpan "90" -ResultPageSize:100 -ErrorAction SilentlyContinue |
where {$_.samaccountname.StartsWith("X") -or $_.samaccountname.StartsWith("Y")} |
Select-Object samaccountname,Name,AccountExpirationDate |
Export-Csv $PSScriptRoot\Results\AD_Expiration_Dates_Accounts_Next_90_days_$((Get-Date).ToString('dd_MM_yyyy')).csv -NoTypeInformation -Append
无论是否使用-ResultPageSize:
选项,我都会不断收到标题中提到的错误。
有趣的是,当我更改-TimeSpan
值时,我得到的值或多或少,因此数据似乎是连贯的,但始终以相同的错误结尾。
问题是,我不确定我是否可以相信这些价值观。即使我删除了-ErrorAction SilentlyContinue
选项,也没有收到其他任何错误或信息。
有人对此有任何输入吗?
答案 0 :(得分:2)
在这种情况下,最好是将Get-ADUser
与适合您想要的所有条件的过滤器一起使用,而不是返回大量结果,然后使用where
子句他们。
还考虑使用-searchscope
选项来限制搜索的OU(如果所有目标帐户都在特定的OU中)。
最初,我会忽略select
语句,以查看您是否获得所需的帐户(在这种情况下,过滤器后不需要-properties AccountExpirationDate
)
$now = get-date
$90days = (get-date).adddays(90)
get-aduser -filter '(AccountExpirationDate -gt $now) -and (AccountExpirationDate -le $90days) -and (samAccountName -like "X*" -or sAMAccountName -like "Y*" )' -properties AccountExpirationDate
| Select-Object samaccountname,Name,AccountExpirationDate