Должен создать сценарий PowerShell для изменения Истечения Пароля и Даты для изменения следующего пароля

Для меня определили задачу с созданием сценария, который читает в файле список идентификаторов Пользователя Active Directory и затем очищается, флаг для Пароля Никогда Не Истекает. Кроме того, мой офицер охраны не хочет 500 пользователей, которые имеют эту установку, чтобы иметь их пароль, сразу должны быть сброшены, таким образом, он хотел, чтобы Доменная политика по умолчанию 90 дней была приписана в то время, когда сценарий, работал, таким образом, пользователь попадает в обычное вращение пароля.

Я пытался создать сценарий PowerShell, чтобы сделать просто это, и сталкиваюсь с проблемами. По общему признанию я не являюсь лучшим в PowerShell, таким образом, я ценил бы некоторый вход.

У меня есть флаг для очистки, но изменение PwdLastSet к-1 оказывается хитрым. Я думаю, что это могло бы быть, потому что я не знаю, как читать в файле и сделать две "ForEach-объектных" команды от чтения в файле. Кто-то мог посмотреть?

Import-CSV PasswordExpiry.csv | ForEach-Object {Set-ADUser -Identity $_.SamAccountName -PasswordNeverExpires:$false}

ForEach-Object {  
 $samaccountname = $_.SamAccountName  
  $today = Get-Date  

  $lastchange = [datetime]::FromFileTime($_.pwdlastset[0])  

  $timediff = New-TimeSpan $lastchange $(Get-Date)  

      $hoursdiff = $timediff.TotalHours  

  if ($hoursdiff -lt $hourschange_sincePwdChange) {  
    $todouser = Get-ADUser $samaccountname -Properties pwdLastSet  

    $todouser.pwdLastSet = 0  
    Set-ADUser -Instance $todouser  

    $todouser.pwdLastSet = -1  
    Set-ADUser -Instance $todouser  

          }  

}  

Я получаю несколько позиционных ошибок параметра, говоря, что это не может принять $null аргумента, но я не уверен, где я неправ.

4
задан 11 September 2014 в 16:48
3 ответа

AD не позволяет изменять дату последнего сброса пароля, за исключением 0 (что приведет к принудительной смене пароля при следующем входе в систему). Для этого вы не можете установить PwdLastSet вручную, вы должны использовать что-то вроде следующего фрагмента:

Set-ADUser -Identity JoeBlow -ChangePasswordAtNextLogon $true
3
ответ дан 3 December 2019 в 03:06

Сдавайтесь, потому что вы не можете (напрямую) изменить атрибут pwdLastSet пользователя. Этот атрибут может быть установлен только самой системой (Directory Services Engine). (ERROR_DS_ATTRIBUTE_OWNED_BY_SAM)

См. документ Microsoft MS-ADTS для получения дополнительной информации.

.
2
ответ дан 3 December 2019 в 03:06

Я смог добиться этого с помощью следующего:

Import-Module ActiveDirectory

$ADUserParams=@{ 
'Searchbase' = 'OU=Users,OU=Testing,OU=IT,OU=XXX,DC=XXX,DC=local' 
'Filter' = '*' 
'Properties' = 'cn','sn','givenname','displayName','mail','description','UserPrincipalName', 'employeeNumber', 'profilepath', 'title' 
}

$ADUsers = Get-ADUser @ADUserParams 
ForEach ($ADUser in $ADUsers) { 
    $ADUser = Get-ADUser $ADUser -properties pwdlastset 
    $ADUser.pwdlastset = 0 
    Set-ADUser -Instance $ADUser 
    $ADUser.pwdlastset = -1 
    Set-ADUser -instance $ADUser 
}

Взято из здесь

1
ответ дан 3 December 2019 в 03:06

Теги

Похожие вопросы