【发布时间】:2019-07-09 12:56:03
【问题描述】:
请原谅我对编程的生疏理解,希望有人能看一眼,看看我的错误在哪里。我在尝试使用 Powershell 在测试 2008 R2 域中批量重置密码时遇到问题。我将 AD 模块导入 Powershell。我有一个包含 sAMAccountName(ADUC 用户名)的 .csv 文件,我通过分配对象 $UserFile = "c:\2019StudentsB115.csv" 将其导入到 powershell 中。然后我使用 foreach 循环遍历并重置每个帐户的密码,但这似乎总是失败。
我尝试将密码作为第二列添加到 .csv 文件中,但没有成功。然后我删除了第二列并删除了密码的相应代码。我尝试使用 ConvertTo-SecureString 为所有这些帐户提供通用密码“Qwerty10”。这些帐户都获得了 1 个通用密码,我不希望用户在第一次登录时必须重置它。我以为我可以使用 foreach 循环轻松做到这一点,但无论我做什么都会出错。
我试过的代码如下:
尝试1:错误“无法将参数绑定到字符串,因为它为空”的无限循环
foreach ($Account in $Resetpassword) {
$Account.sAMAccountName
$Account.Password
Set-ADAccountPassword -Identity $Account.sAMAccountName -NewPassword (ConvertTo-SecureString $Account.Password -AsPlainText "Qwerty10" -force) -Reset
}
尝试 2:错误“无法验证参数 'Identity' 的参数。参数为空。”石灰: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 作为新密码传递给此 cmdlet 并且它可以工作,那么为什么我不能使用 .csv 文件传递它呢?任何提示或指针将不胜感激。我通过谷歌搜索打开了大约 20 个标签,但没有任何帮助。我查看了 Get/set ADAddcount 和 ConvertTo-SecureString 的语法,但这并不能真正帮助我弄清楚如何从这个 .csv 文件中分配对象。
亚历克斯
我试过跑步:
foreach ($Account in $Resetpassword) {
Set-ADAccountPassword $Account -NewPassword (ConvertTo-SecureString -AsPlainText "Qwerty19" -force) -Reset
}
其中 1 个帐户的结果:
Set-ADAccountPassword:无法绑定参数“身份”。不能 转换类型的“@{sAMAccountName=math5-3}”值 “System.Management.Automation.PSCustomObject”键入 “Microsoft.ActiveDirectory.Management.ADAAccount”。在行:2 字符:30 + 设置-ADAccountPassword
【问题讨论】:
-
您的
foreach循环包含$account.SamAccountName。这会带回您期望看到的用户名吗? Identity eq $null 表示缺少的位 -
如果您的 CSV 仅包含帐户名称,请删除 ...Samaccount 名称并使用
$account。喜欢foreach ( $account in $resetpasswords ) { Set-adAccountPassword $account -NewPassword (ConvertTo-SecureString -AsPlainText "Qwerty10" -force) -Reset } -
谢谢你的建议,我试过了。一旦我删除了 SamAccountName 部分,它就会给出一个新错误,但现在似乎正在通过 .csv 文件。错误是“无法绑定参数“Identity”。无法转换“System.Management.Automation.PSCustomObject”类型的“@(sAMAccountName=USERNAME)”值键入“Microsoft.ActiveDirectory.Management.Commands.SetADAccountPassword”如果我读这个错误对我无法将 AD 用户名转换为我在此脚本中创建的自定义对象?
-
我也在想也许我没有正确使用 Set-AdAccountPassword 中的 -Identity
-
天知道。您是否有机会编辑您的帖子以包含此结果?
$resetpassword[1]。随意更改任何可识别的内容,这是我要查找的变量名。
标签: windows powershell server directory