2016-06-08 52 views
0

这是我来回答最接近:新ADUser便有在PowerShell中,帐户过期加一天

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} 

然后加入到新-ADUser便有:

New-ADUser -Path $TestOU -SamAccountName $SamAccountName -AccountExpirationDate $AccountExpiryDate ` 

它拉就好了日期,但需要为下一个一天(我明白上午12点的套头衫)。当我尝试这样:

else {$AccountExpiryDate = ([DateTime]($Line.'Contract Expiration')).AddDays(1)} 

它拉动原来的日期,就好像AddDays(1)没有附加。有任何想法吗?


发现的解决方案(感谢奥斯汀法国)

$ExpireDate = $Line.'Contract Expiration' 
    $nDate = [DateTime]::Parse($ExpireDate) 
    if ($ExpireDate -eq "") {$AccountExpiryDate = [DateTime]::Now.AddYears(1)} 
    else {$AccountExpiryDate = $nDate.AddDays(1)} 
+0

试着解析日期?例如:'$ nDate = [DateTime] :: Parse($ string); $ nDate.AddDays(1)' –

+0

甜,另一个说明:一个尝试/捕获将是一个伟大的想法,以防日期非常畸形(因此整个脚本不会死!) –

回答

1

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

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

$ newDateTime = [DATETIME] ::解析($ Line.'Contract过期') $ AccountExpiryDate = $ newDate.AddDays(1)

+0

这就是它。添加工作解决方案到原始帖子。 –

相关问题