2013-06-19 1 views
1

У меня есть сценарий powershell ниже, где я создаю нового пользователя &, пытаясь установить его требуемые свойства. Проблема, с которой я столкнулась, заключается в том, что я не могу установить случайный пароль, создав функцию «Get-Password». Пожалуйста, смотрите.Попытка создания случайного пароля

Import-Module ActiveDirectory 
[xml]$dataSource = Get-Content C:\Names1.xml 

$name = Read-Host 'Please enter the table name : ' 

$user_logon = $dataSource.names.$name | ? { $_.Rule_Label -eq 'Regular service account (user logon)'} 

$display_name = $dataSource.names.$name | ? { $_.Rule_Label -eq 'Regular service account (display name)'} 

$pre_windows = $dataSource.names.$name | ? { $_.Rule_Label -eq 'Regular service account (pre-Windows 2000)'} 

Function GET-Temppassword() { 
Param(
[int]$length=10, 
[string[]]$sourcedata 
) 

For ($loop=1; $loop –le $length; $loop++) { 
     $TempPassword+=($sourcedata | GET-RANDOM) 
     } 

return $TempPassword 
} 

switch ($name) 
{ 
    DevTable{foreach($dataRecord in $dataSource) 
    { 
    try  
    { 
    $cn=$user_logon.Output_Value 
    $sAMAccountName=$user_logon.Output_Value 
    $givenName=$user_logon.Output_Value 
    $sn=$user_logon.Output_Value 
    $displayName=$display_name.Output_Value 
    $userPrincipalName=$sAMAccountName + “@test.com”; 

    $alphabet=$NULL;For ($a=65;$a –le 90;$a++) {$alphabet+=,[char][byte]$a } 
    GET-Temppassword –length 10 –sourcedata $alphabet 

    New-ADUser $cn -SamAccountName $sAMAccountName -GivenName $givenName -Surname $sn -DisplayName $displayName -UserPrincipalName $userPrincipalName -accountPassword (ConvertTo-SecureString -AsPlainText $alphabet -Force) -PasswordNeverExpires $true -Path "OU=Service,OU=Accounts,DC=xyz,DC=com" 

    set-aduser $cn -replace @{comment="xxyyzz"} 
    set-aduser $cn -replace @{"account"=1}  

    Add-ADGroupMember -Identity xyz -Member $cn 
    Add-ADGroupMember -Identity abc -Member $cn 

    write-host "New DevTable ADUser has been created!!!"; 
    } 

    catch [Exception] 
    { 

     write-host "Error - Requested AD Service Account is already present...Please check & confirm " -foreground "red" 
    } 
    } 
    break; 
    } 

    default {"The table could not be determined!!!"}  

} 

[System.GC]::Collect() 

Кроме того, я хотел знать, является ли это наиболее подходящим способом установки случайного пароля.

Спасибо.

+0

Что вы подразумеваете под словом «не удается установить случайный пароль»? Вы не получаете пароль или генерируете пароль, который не соответствует вашим ограничениям пароля (длина, тип символов и т. Д.)? Что, если есть, сообщения об ошибках вы получаете? – alroc

+0

Мой пользователь не создается в этом случае, когда я пытаюсь добавить атрибут AccountPassword. – 0nir

+0

Если вы разместите строку или две в содержании $ dataSource, это может помочь. – Peter

ответ

1
$alphabet=$NULL;For ($a=65;$a –le 90;$a++) {$alphabet+=,[char][byte]$a } 
GET-Temppassword –length 10 –sourcedata $alphabet 

New-ADUser $cn -SamAccountName $sAMAccountName -GivenName $givenName -Surname $sn -DisplayName $displayName -UserPrincipalName $userPrincipalName -accountPassword (ConvertTo-SecureString -AsPlainText $alphabet -Force) -PasswordNeverExpires $true -Path "OU=Service,OU=Accounts,DC=rjfdev,DC=com" 

Вы не фиксируете значение, возвращенное с Get-Temppassword. Вы отправляете $alphabet в качестве нового пароля для учетной записи пользователя. Попробуйте это (непроверено):

$alphabet=$NULL;For ($a=65;$a –le 90;$a++) {$alphabet+=,[char][byte]$a } 
$TempPassword = GET-Temppassword –length 10 –sourcedata $alphabet 

New-ADUser $cn -SamAccountName $sAMAccountName -GivenName $givenName -Surname $sn -DisplayName $displayName -UserPrincipalName $userPrincipalName -accountPassword (ConvertTo-SecureString -AsPlainText $TempPassword -Force) -PasswordNeverExpires $true -Path "OU=Service,OU=Accounts,DC=rjfdev,DC=com" 
+0

Я боюсь, но случайный пароль не был установлен даже после внесения вышеуказанного изменения. – 0nir

+0

@alroc является правильным, но он добавил опечатку к своему исправлению. В его исправлении измените '$ TempPassword-Force' на' $ TempPassword -Force' и повторите попытку. Я отредактировал ответ, но его нужно принять. – charleswj81

+0

@ charleswj81 спасибо, что поймал это, теперь он исправлен. – alroc