Powershell Active Directory - 保存日期

Powershell Active Directory - 保存日期

我创建了一个新的 AD 字段,我想将用户的出生日期保存在我们的 AD 中...

我们通过 Powershell 脚本进行创建,但由于日期格式,我在保存此字段时遇到问题...我认为 AD 保存为 yyyymmddhhmmss 格式,但我不知道如何转换为这个值...

有人有想法吗?我当前的代码是:

$MyDateVar= '19830613000000' 
Set-ADUser $samaccountname -replace @{MyField=datetime]::fromFileTime($MyDateVar)}

它保存了日期,但是像 23/01/01 22:51:01 而不是 1983/06/13 00:00:00

答案1

一些问题:

首先,您的示例中缺少方括号datetime]。我猜这只是一个转录错误。

您似乎正在尝试使用 FileTime,但带有连接的字符串。FileTime 指的是特定类型的值,即“一个 64 位值,表示自 1601 年 1 月 1 日午夜 12 点以来经过的 100 纳秒间隔数”。

事实上,您提到的结果就是将日期保存为 23/01/1601(或字面意思)01/01/1601 + (19830613000000 * 100ns)

FileTime 是 Active Directory 在日期字段中期望的内容,因此您实际上想要转换FileTime,不是来自。

根据您获取数据的方式,您可以在导入之前或调用期间对其进行转换 - 以下是拆分日期字符串的垃圾示例:

$MyDateVar= '19830613000000'
$Birthday = @{
    Year   = -join$MyDateVar[0..3]
    Month  = -join$MyDateVar[4..5]
    Day    = -join$MyDateVar[6..7]
    Hour   = 0
    Minute = 0
    Second = 0
}
$BirthdayFileTime = (Get-Date @Birthday).ToFileTime()

Set-ADUser $SAMAccountName -Replace @{Birthday=$BirthdayFileTime}

相关内容