Это ближайший я пришел к ответу:New-ADUser в PowerShell, Счет Истечение плюс один день
Set-ADAccountExpiration in PowerShell sets AD account -1 day. Why?
Однако, это не работает в моем случае. Я создаю новых пользователей с PowerShell в Active Directory. Истечение счет извлекается из файла 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:00). Когда я пытаюсь это сделать:
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)}
Пробовал разобрать дату? Что-то вроде: '$ nDate = [DateTime] :: Parse ($ string); $ nDate.AddDays (1) ' –
Sweet, another note: Try/catch была бы отличной идеей в случае действительно искаженных дат (так что весь скрипт не умирает!) –