【问题标题】:New-ADUser in PowerShell, Account Expiration plus one dayPowerShell 中的新 ADUser,帐户到期时间加 1 天
【发布时间】: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


【解决方案1】:

我怀疑列中的日期未正确转换为 DateTime 对象。使用 DateTime.Parse 方法将有助于验证对象并正确转换字符串。

在您的情况下,请尝试以下操作:

$newDateTime = [DateTime]::Parse($Line.'Contract Expiration') $AccountExpiryDate = $newDate.AddDays(1)

【讨论】:

  • 就是这样。为原始帖子添加了工作解决方案。
猜你喜欢
  • 2013-07-31
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 2016-08-21
  • 2022-01-02
  • 1970-01-01
相关资源
最近更新 更多