PDA

Показать полную графическую версию : [решено] Массовый сброс пароля в AD


Johny_spb
20-04-2017, 13:07
Доброго времени суток!

Подскажите как реализовать сброс пароля пользователей AD(по списку) и установки требования смены пароля при первом входе.
Пробовал так:
$objUser=[ADSI]"LDAP://DN_пользователя"
$objUser.SetPassword("Новый_пароль")
$objUser.Put ("pwdLastSet",0) //требование сменить пароль
$objUser.SetInfo()

Но вы это варианте не устраивает то что надо указывать DN, а он разный. Можно ли это реализовать через учетную запись? И не получается задать требование смены пароля при первом входе.

Kazun
20-04-2017, 13:54
Set-ADUser User -ChangePasswordAtLogon 1

Johny_spb
20-04-2017, 15:38
Set-ADUser User -ChangePasswordAtLogon 1
Это у меня не срабатывает =( Выдает ошибку

Set-ADUser : Не удается преобразовать "System.String" в тип "System.Nullable`1[
System.Boolean]", необходимый для параметра "ChangePasswordAtLogon".
строка:1 знак:47
+ set-AdUser USER -ChangePasswordAtLogon 123$Qwe
+ ~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-ADUser], ParameterBind
ingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.
Management.Commands.SetADUser

Вариант:

$new=Read-Host "Enter the new password" -AsSecureString
Set-ADAccountPassword USER -NewPassword $new
Set-ADUser USER -ChangePasswordAtLogon $True

Но в этом варианте приходиться вводить пароль, а хотелось бы сделать это автоматом (т.к. Это необходимо для задания первоначального пароля пользователя, который должен поменяться при первом входе)

Вариант:
Set-ADAccountPassword USER -NewPassword (ConvertTo-SecureString -AsPlainText -String "123" -force)
Set-ADUser USER -ChangePasswordAtLogon $True

не работает =(

Kazun
20-04-2017, 15:47
Научиться копировать без ошибок, это тяжело в наше время.

set-AdUser USER -ChangePasswordAtLogon 123$Qwe <- Что это?

Если требуется задать новый пароль и запросить у пользователя сменить пароль при логоне:
Set-ADAccountPassword USER -Reset -NewPassword (ConvertTo-SecureString -AsPlainText -String "123" -force)
Set-ADUser USER -ChangePasswordAtLogon $True

Johny_spb
20-04-2017, 16:13
Да именно это и надо.

Set-ADAccountPassword USER -Reset -NewPassword (ConvertTo-SecureString -AsPlainText -String "123$Qwe" -force)
Set-ADUser USER -ChangePasswordAtLogon $True



ConvertTo-SecureString : Не удается привязать аргумент к параметру "String", та
к как он представляет собой пустую строку.
строка:1 знак:100
+ ... inText -String "123$Qwe" -force)
+ ~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [ConvertTo-SecureString], Param
eterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAl
lowed,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand

Но только этот вариант не работает =(

Kazun
20-04-2017, 16:19
Если пароль содержит $ - то использовать одинарные кавычки.

'123$Qwe'

И приводите скрины, т.к. информация явно несоответсвует действительности.

Johny_spb
21-04-2017, 08:48
Да действительно, если использовать одинарные кавычки то все работает))

А можно ли сделать так что бы он брал имена уч. записей из файла csv?

$users = Import-Csv C:\Temp\1\user1.csv -Delimiter ";" -Encoding Default | Where Name
foreach ($user in $users) {
$name=$user.name

Set-ADAccountPassword $name -Reset -NewPassword (ConvertTo-SecureString -AsPlainText -String '123$Qwe' -force)
Set-ADUser $name -ChangePasswordAtLogon $True
}

Вроде данный вариант работает(по крайней мере без ошибок), но честно говоря не понимаю точно ли выполнят замену пароля пользователям?

Johny_spb
21-04-2017, 11:04
Все ок!!




© OSzone.net 2001-2012