PowerShell 日期解析在 AD 查询中不起作用

PowerShell date parsing not working in AD query

我正在尝试获取帐户过期超过 6 个月的 AD 用户列表。

这是我的代码:

Get-ADUser -Filter {Enabled -eq $False} -Properties employeeID,sn,givenName,LastLogonDate | Where-Object {[STRING]$_.LastLogonDate -ne "" -and (Get-Date) -gt ([datetime]::parseexact([STRING]$_.LastLogonDate, "dd/MM/yyyy HH:mm:ss", $null)).AddMonths(6)} | select employeeID,sn,givenName,sAMAccountName,LastLogonDate | Sort-Object -Property sn | Export-Csv -Path $filename

我收到错误: The DateTime represented by the string is not supported in the System.Globalization.GregorianCalendar

我也在 parseexact 中尝试了 (Get-Culture)。也不行。

而当简单地执行类似 [datetime]::parseexact("21/05/2015 16:14:37", "dd/MM/yyyy HH:mm:ss", $null) 的操作时 它按预期工作。

我做错了什么?

谢谢

您可以通过将 LastLogonDate 添加到 Filter 并删除 Where-Object:

来改进您的查询
$limit = [datetime]::Now.AddMonths(-6).Date
$params = @{
    Filter = "LastLogonDate -lt '$limit' -and Enabled -eq '$false'"
    Properties = 'LastLogonDate', 'sn', 'EmployeeID'
}

Get-ADUser @params | Sort-Object sn | Export-Csv ....