2013-10-04 4 views
8

Ich benutze Primal Forms Community Edition, um eine GUI zu erstellen, die unseren neuen Student-Erstellungsprozess für unsere Sekretäre streamen wird. In den unteren Schulen verwenden die Schüler ihre Geburtstage als ihre Passwörter, so dass sie leicht zu merken sind.String kann nicht in sicheren String konvertiert werden, um in New-ADUser zu verwenden

Ich habe eine Texteingabe-Box, die als "Geburtstag" Feld gekennzeichnet ist. Ich möchte dieses Feld verwenden und für AccountPassword in New-ADUser verwenden. Egal, was ich versuche, bekomme ich immer diesen Fehler, wenn ich versuche, einen neuen Benutzer mit meinem Skript zu erstellen.

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 

Der Code, den ich verwende, sieht so aus.

$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 

Ich bin wirklich ratlos hier, weil alles, was ich gesehen habe, sagt, dass, was ich sollte

bearbeiten Arbeit tun -

Die Lösung unten hat lösen das Passwort Problem. Ich erkannte jedoch nicht, dass ich tatsächlich zusätzliche Probleme mit meinem Code sah.

Ich habe -verbose eingeschaltet, um zu sehen, was passiert ist und festgestellt, dass das Feld Name nicht korrekt ausgegeben wurde. Wenn "$ lname, $ fname" für Name = gesetzt wurde, führte dies aus irgendeinem Grund zur vollständigen Ausgabe von $ lname. Ich habe einen neuen String namens $ name erstellt und setze ihn auf = $ lname.text + "," + $ fname.text.

Jetzt Name = $ name und der Befehl wird wie erwartet ausgelöst.

+0

hatte ich die Antwort auf die auf dem Excel-Frage, aber Sie es gelöscht, bevor ich es schreiben könnte. –

Antwort

9

ändern

AccountPassword = "$password" 

zu

AccountPassword = $password 

Wenn Sie Anführungszeichen um die Variable, wird es als eine reguläre Zeichenfolge anstelle einer sicheren Zeichenfolge genommen. Beweis:

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

Ergebnisse in

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

Wenn ich das aber mache, habe ich diesen Fehler: 'New-ADUser: Ein Wert für das Attribut war nicht im akzeptablen Wertebereich Bei C: \ Users \ **** \ Google Drive \ Work \ Skripte \ Powershell \ student_creation_gui.ps1: 377 Zeichen: 1 + Neu-ADUser @User + ~~~~~~~~~~~~~~ + KategorieInfo: NotSpecified: (CN = System.Windo. ..afford, DC = local: Zeichenfolge) [New-ADUser], ADException + FullyQualifiedErrorId: ActiveDirectoryServer: 8322, Microsoft.ActiveDirectory.Management.Commands.NewADUser' – ParadoxCTRL

Verwandte Themen