простите за мое ржавое понимание программирования, в надежде, что кто-то может взглянуть на это и увидеть, где моя ошибка.У меня проблемы с попыткой массового сброса паролей в тестовом домене 2008 R2 с помощью Powershell.Я импортировал модуль AD в Powershell.У меня есть файл .csv, содержащий sAMAccountName (имена пользователей ADUC), и я импортирую его в powershell, назначая объект $ UserFile = "c: \ 2019StudentsB115.csv".Затем я использую цикл foreach, чтобы пройти и сбросить пароли для каждой учетной записи, но здесь всегда возникает ошибка.
Я попытался добавить пароль в файл .csv в качестве 2-го столбца, и это нене работаетЗатем я удалил 2-й столбец и удалил соответствующий код для паролей.Я пытался использовать ConvertTo-SecureString, чтобы дать общий пароль «Qwerty10» для всех этих учетных записей.Все эти учетные записи получают 1 общий пароль, и я не хочу, чтобы пользователь сбрасывал его при первом входе в систему.Я думал, что мог бы использовать цикл foreach, чтобы легко сделать это, но я получаю ошибки независимо от того, что я делаю.
Код, который я пробовал, выглядит следующим образом:
Попытка 1: бесконечный циклошибка "Невозможно связать аргумент со строкой, поскольку он имеет значение null"
foreach ($Account in $Resetpassword) {
$Account.sAMAccountName
$Account.Password
Set-ADAccountPassword -Identity $Account.sAMAccountName -NewPassword (ConvertTo-SecureString $Account.Password -AsPlainText "Qwerty10" -force) -Reset
}
Попытка 2: ошибка "Невозможно проверить аргумент в параметре" Идентичность ". Аргумент имеет значение null."lime: 3 символа: 40
$UserFile = "c:\2019StudentsB115.csv"
foreach ($Account in $Resetpassword) {
$Account.sAMAccountName
Set-ADAccountPassword -Identity $Account.sAMAccountName -NewPassword (ConvertTo-SecureString "Qwerty19" -AsPlainText -force) -Reset
}
Я подумал, может быть, это был мой синтаксис с использованием Set-AdAccountPassword
, но затем я попробовал это, и он работал нормально: Set-AdAccountPassword -Identity "math1-1" -NewPassword (ConvertTo-SecureString -AsPlainText "Qwerty10" -force)
Я передаюидентичность Math1-1 и пароль Qwerty10 в качестве нового пароля для этого командлета, и он работает, так почему я не могу передать это с помощью файла .csv?Любые советы или указатели будут оценены.У меня есть около 20 открытых вкладок от Google, и ничего не помогает.Я рассмотрел синтаксис для Get / set ADAddcount и ConvertTo-SecureString, но это не помогает мне понять, как назначать объекты из этого файла .csv.
Alex
Я попытался запустить:
foreach ($Account in $Resetpassword) {
Set-ADAccountPassword $Account -NewPassword (ConvertTo-SecureString -AsPlainText "Qwerty19" -force) -Reset
}
Результаты 1 из учетных записей:
Set-ADAccountPassword: Невозможно связать параметр 'Identity'.Не удалось преобразовать значение «@ {sAMAccountName = math5-3}» типа «System.Management.Automation.PSCustomObject» в тип «Microsoft.ActiveDirectory.Management.ADAccount».В строке: 2 символа: 30 + Set-ADAccountPassword <<<< $ Account -NewPassword (ConvertTo-SecureString -AsPlainText "Qwerty19" -force) -Re set + CategoryInfo: InvalidArgument: (:) [Set-ADAccountPassword], ParameterBindingException +FullyQualifiedErrorId: CannotConvertArgumentNoMessage, Microsoft.ActiveDirectory.Management.Commands.SetADAccoun tPassword </p>