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 ....
我正在尝试获取帐户过期超过 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 ....