我们希望在2008 R2中为我们的Active Directory架构添加几个日期字段,以帮助实现一些自动化。特别是添加从导入中自动填充的hireDate
字段。
这一切都在我们的测试环境中按预期工作,但是我很好奇是否有办法在日期时增强此自定义属性的显示。
hireDate
字段设置为广义时间的语法,以匹配whenCreated
等原生字段。
但是,将日期放入hireDate
时,其显示格式与显示的whenCreated
大不相同
> $user = Get-ADUser MyUser -Properties whenCreated,hireDate
> $user
-- snip --
hireDate : {19870301070000.0Z}
whenCreated : 8/28/2014 12:24:42 PM
如果我检查这些属性的 MemberType ,即使它们都是广义时间
,它们也是不同的$user | Get-Member -MemberType Properties
TypeName: Microsoft.ActiveDirectory.Management.ADUser
Name MemberType Definition
---- ---------- ----------
hireDate Property Microsoft.ActiveDirectory.Management.ADPropertyValueCollection hireDate {get;set;}
whenCreated Property System.DateTime whenCreated {get;}
是否有正确的方法可以将自定义属性创建为DateTime
,还是我们限制创建这些属性的方式?
答案 0 :(得分:1)
hireDate
是一个集合。要获得实际值,您需要.hireDate[0]
或.hireDate | Select-Object -First 1
。如果PowerShell没有为您解析Generalize-Time时间戳(hireDate
毕竟不是标准属性),您需要do it yourself。
$fmt = "yyyyMMddHHmmss.f'Z'"
$culture = [Globalization.CultureInfo]::InvariantCulture
Get-ADUser MyUser -Properties whenCreated,hireDate |
Select-Object -Property *, @{n='hireDate';e={
[DateTime]::ParseExact($_.hireDate[0], $fmt, $culture)
}} -Exclude hireDate