Active Directory ADUser whenCreated 属性

问题描述 投票:0回答:2

我创建了(服务器 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
powershell active-directory
2个回答
3
投票

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'"

2
投票
当您按

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)"
© www.soinside.com 2019 - 2024. All rights reserved.