Powershell查询未计算正确的日期

kmbjn2e3  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(84)

你好,
我们从每天运行的导入脚本中获取AD用户,如果在csv中找到用户,则以“dd-MM-yyyy”格式在extensionattribute 1中写入当前日期。现在,如果AD用户在extensionattribute 1中具有不同的日期(减去90天),则我们希望通知其管理员应如何处理这些帐户。
有趣的是,与我的查询,我们得到正确的用户和一些用户之间的30至90天.我不知道什么是错误的,在我的代码或语法-有人能请帮助?谢谢
对不起,我现在还不是PowerShell Pro,但正在处理它:D问候语

# get date -90 Days
$date = (Get-Date).AddDays(-90).ToString("dd-MM-yyyy")
$date
# it gets "27-08-2022" -> so the script should only show users less than this date

# query for extensionattribute1 less than 90 days 
get-aduser -properties ExtensionAttribute1 -filter {(enabled -eq "true") -and (extensionAttribute1 -gt $date)}

# here the output is partial correct, we get users with an extensionattribute1 from 
# 31-05-2022
# 30-06-2022
# 29-07-2022
# but also some Users with a date from between 30 and 90 days what is incorrect =/
# 30-09-2022 
# 31-10-2022
a64a0gku

a64a0gku1#

您不应该相互比较datestrings,尤其是当您使用日期格式"dd-MM-yyyy"时,因为这是一种不可排序的日期格式。(如果您使用格式'yyyy-MM-dd',则可能不会发生这种情况。)
而是先将在ExtensionAttribute1中找到的值转换为DateTime对象,然后将其与真实的引用的DateTime对象进行比较。
尝试

# get date -90 Days
$date = (Get-Date).AddDays(-90).Date  # set to midnight with time part '00:00:00'

# query for extensionattribute1 less than 90 days 
Get-ADUser -Properties ExtensionAttribute1 -Filter 'Enabled -eq $true -and ExtensionAttribute1 -like "*"' | 
Where-Object {[datetime]::ParseExact($_.ExtensionAttribute1, 'dd-MM-yyyy', $null) -gt $date}

相关问题