gpt4 book ai didi

powershell - 无法将字符串转换为安全字符串以在New-ADUser中使用

转载 作者:行者123 更新时间:2023-12-03 14:51:25 25 4
gpt4 key购买 nike

我正在使用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,命令将按预期触发。

最佳答案

更改

AccountPassword = "$password"


AccountPassword = $password

如果对变量使用引号,则将其视为常规字符串而不是安全字符串。证明:
$plainText = "Plain text"
$secureString = ConvertTo-SecureString $plainText -AsPlainText -Force
$quotedSecureString = "$secureString"
$plainText.GetType()
$secureString.GetType()
$quotedSecureString.GetType()

结果是
IsPublic IsSerial Name                                     BaseType
-------- -------- ---- --------
True True String System.Object
True False SecureString System.Object
True True String System.Object

关于powershell - 无法将字符串转换为安全字符串以在New-ADUser中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19188761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com