我正在使用 Primal Forms Community Edition 创建一个 GUI,它将简化我们的秘书的新学生创建过程。在较低级别的学校,学生使用他们的生日作为他们的密码,所以他们很容易记住。
我有一个标记为“生日”字段的文本输入框。我要做的是获取该字段并将其用于 New-ADUser 中的 -AccountPassword。但是,无论我尝试什么,在尝试使用我的脚本创建新用户时总是会收到此错误。
New-ADUser : Cannot bind parameter 'AccountPassword'. Cannot convert the "System.Security.SecureString" value of type
"System.String" to type "System.Security.SecureString".
At C:\Users\pomeroyt\Google Drive\Work\Scripts\Powershell\student_creation_gui.ps1:377 char:12
+ New-ADUser @User
+ ~~~~~
+ CategoryInfo : InvalidArgument: (:) [New-ADUser], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.NewADUser
我正在使用的代码如下所示。
$password = $dob.text | ConvertTo-SecureString -AsPlainText -Force
$user = @{
Description = "Student"
UserPrincipalName = "$username@domain.local"
Name = "$lname.text, $fname.text"
SamAccountName = "$username"
Surname = "$lname.text"
GivenName = "$fname.text"
EmailAddress = "$email"
HomeDrive = H:
HomeDirectory = "\\$server\Students\$yog\$username"
ScriptPath = "$script"
ChangePasswordAtLogon = 0
CannotChangePassword = 1
PasswordNeverExpires = 1
AccountPassword = "$password"
Enabled = 1
Path = "OU=$yog,OU=$group,OU=STUDENTS,DC=domain,DC=local"
}
New-ADUser @User
我真的很茫然,因为我所看到的一切都表明我正在做的事情应该有效
编辑 -
下面的解决方案确实解决了密码问题。但是,我没有意识到我实际上看到了我的代码的其他问题。
我打开 -verbose 来查看发生了什么,发现 Name 字段没有正确输出。将 "$lname, $fname" 放入 Name = 时,由于某种原因导致 $lname 的完整输出。我创建了一个名为 $name 的新字符串并将其设置为 = $lname.text+", "+$fname.text。
现在 Name = $name 并且命令按预期触发。