2013-10-04 11 views
8

Tôi đang sử dụng Primal Forms Community Edition để tạo GUI sẽ tạo luồng cho quy trình tạo sinh viên mới cho thư ký của chúng tôi. Ở các trường cấp thấp, học sinh sử dụng ngày sinh nhật của họ làm mật khẩu để các em dễ nhớ.Không thể chuyển đổi chuỗi thành chuỗi an toàn để sử dụng trong New-ADUser

Tôi có Hộp nhập văn bản được gắn nhãn là trường "Sinh nhật". Những gì tôi đang làm là lấy trường đó và sử dụng nó cho -AccountPassword trong New-ADUser. Tuy nhiên, không có vấn đề gì tôi cố gắng tôi luôn luôn nhận được lỗi này khi cố gắng để tạo ra một người dùng mới với kịch bản của tôi.

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 

Mã tôi đang sử dụng trông như thế này.

$password = $dob.text | ConvertTo-SecureString -AsPlainText -Force 
$user = @{ 
    Description = "Student" 
    UserPrincipalName = "[email protected]" 
    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 

Tôi thực sự lúng túng ở đây vì tất cả những gì tôi đã nhìn thấy nói rằng những gì tôi đang làm nên làm việc

Edit -

Các giải pháp dưới đây đã giải quyết vấn đề mật khẩu. Tuy nhiên, tôi đã không nhận ra rằng tôi đã thực sự nhìn thấy vấn đề bổ sung với mã của tôi.

Tôi bật chế độ chờ để xem điều gì đang xảy ra và phát hiện thấy trường Tên không xuất hiện chính xác. Khi đặt "$ lname, $ fname" cho Tên = nó dẫn đến kết quả đầu ra đầy đủ của $ lname vì một lý do nào đó. Tôi đã tạo một chuỗi mới có tên $ name và đặt nó thành = $ lname.text + "," + $ fname.text.

Bây giờ Name = $ name và lệnh sẽ kích hoạt như mong đợi.

+0

tôi đã có câu trả lời cho bạn về câu hỏi Excel của bạn, nhưng bạn đã xóa nó trước khi tôi có thể gửi nó. –

Trả lời

9

Thay đổi

AccountPassword = "$password" 

để

AccountPassword = $password 

Nếu bạn có dấu ngoặc kép quanh biến, nó được thực hiện như là một chuỗi thông thường thay vì một chuỗi an toàn. Chứng minh:

$plainText = "Plain text" 
$secureString = ConvertTo-SecureString $plainText -AsPlainText -Force 
$quotedSecureString = "$secureString" 
$plainText.GetType() 
$secureString.GetType() 
$quotedSecureString.GetType() 

kết quả trong

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  String         System.Object 
True  False SecureString        System.Object 
True  True  String         System.Object 
+0

Khi tôi làm điều đó, tuy nhiên tôi kết thúc với lỗi này: 'Người dùng mới-AD: Giá trị cho thuộc tính không nằm trong phạm vi giá trị chấp nhận được Tại C: \ Users \ **** \ Google Drive \ Work \ Tập lệnh \ Powershell \ student_creation_gui.ps1: 377 char: 1 + Người dùng mới-ADUser @User + ~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (CN = System.Windo. ..afford, DC = local: String) [New-ADUser], ADException + FullyQualifiedErrorId: ActiveDirectoryServer: 8322, Microsoft.ActiveDirectory.Management.Commands.NewADUser' – ParadoxCTRL

Các vấn đề liên quan