【发布时间】:2016-06-08 21:20:48
【问题描述】:
这是我最接近答案的:
Set-ADAccountExpiration in PowerShell sets AD account -1 day. Why?
但是,它不适用于我的情况。我在 Active Directory 中使用 PowerShell 创建新用户。帐户过期时间是从 CSV 文件中提取的,如下所示:
$ExpireDate = $Line.'Contract Expiration'
if ($ExpireDate -eq "") {$AccountExpiryDate = [DateTime]::Now.AddYears(1)}
else {$AccountExpiryDate = $ExpireDate}
然后添加到New-ADUser:
New-ADUser -Path $TestOU -SamAccountName $SamAccountName -AccountExpirationDate $AccountExpiryDate `
它可以很好地显示日期,但需要在第二天(我了解 12:00 am 套头衫)。当我尝试这个时:
else {$AccountExpiryDate = ([DateTime]($Line.'Contract Expiration')).AddDays(1)}
它提取原始日期,就像未附加 AddDays(1) 一样。有什么想法吗?
找到解决方案(感谢 Austin French)
$ExpireDate = $Line.'Contract Expiration'
$nDate = [DateTime]::Parse($ExpireDate)
if ($ExpireDate -eq "") {$AccountExpiryDate = [DateTime]::Now.AddYears(1)}
else {$AccountExpiryDate = $nDate.AddDays(1)}
【问题讨论】:
-
尝试解析日期?比如:
$nDate = [DateTime]::Parse($string); $nDate.AddDays(1) -
甜蜜,另一个注意事项:如果日期格式真的不正确,try/catch 将是一个好主意(所以整个脚本不会死!)
标签: csv powershell active-directory