我创建了(服务器 2019)一个 ADUser:TestUser100。
New-ADUser -name TestUser100
这个用户有一个属性:whenCreated("11.05.2021 15:00:00"),当我尝试找到该用户时:
Get-ADUser -filter{whenCreated -eq "11.05.2021 15:00:00"} -properties whenCreated
我一无所获,当我搜索:创建它有效时,为什么?
Get-ADUser -filter{Created -eq "11.05.2021 15:00:00"} -properties Created
whenCreated
属性以字符串形式存储在AD中,格式为20111101000413.0Z
。 (祖鲁语格式)
当您将其与另一个字符串
11.05.2021 15:00:00
进行比较时,结果将为 $false。
PowerShell 可以方便地将该属性映射到属性
Created
,即转换为 Datetime 对象的 whenCreated 字符串。Created
位于等式的左侧,所以您提供的字符串会由 PowerShell 转换为 Datetime 对象,并且所有内容都会按照您的预期进行比较。
顺便说一句,
-Filter
是一个字符串,而不是脚本块,所以应该是
"Created -eq '11.05.2021 15:00:00'"
Get-ADUser
或
DateTime
进行过滤时,
whenCreated
需要一个 whenChanged
对象。
这应该有效:
$date = '11.05.2021 15:00:00' -as [datetime]
Get-ADUser -Filter 'whenCreated -eq $date'
否则,如果你想传入带有日期的字符串,则需要使用正确的格式:String(Generalized-Time)语法。
$date = '11.05.2021 15:00:00' -as [datetime]
$correctFormatForWhenCreated = $date.ToUniversalTime().ToString('yyyyMMddHHmmss.0Z')
然后两者都应该可以工作,
-Filter
和-LDAPFilter
:
Get-ADUser -Filter 'whenCreated -eq $correctFormatForWhenCreated'
# or
Get-ADUser -LDAPFilter "(whenCreated=$correctFormatForWhenCreated)"