добавить случайный генератор в той же функции - PullRequest
0 голосов
/ 04 марта 2019

Можно ли добавить генератор случайных паролей в эту функцию?

Function Create-User([String] $Username, [String] $Name, [String] $Surname, [String] $OU, [String] $Group){

    $User = Get-ADUser -Filter {sAMAccountName -eq $Username}
    }

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Вы можете добавить небольшую функцию для генерации пароля.Приведенный ниже код создает пароль со смесью прописных и строчных букв, цифр и, если необходимо, также символов.

function New-Password {
    [CmdletBinding()]
    param(
        [Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [ValidatePattern("[0-9]")]
        [int]$Length = 12,

        [switch]$IncludeSymbols
    )

    $pw = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    if ($IncludeSymbols) {
        $pw += "!$%^-_:;{}<>#&@]~"
    }
    return -join ([Char[]]$pw | Get-Random -Count $length)
}

Используйте в своей функции Create-User, например:

Function Create-User {
    [CmdletBinding()]
    param(
        [String]$Username, 
        [String]$Name, 
        [String]$Surname,
        [String]$OU
    )

    # call the New-Password function to get a plain text password.
    $plainTextPassword = New-Password -Length 8
    $securePassword    = $plainTextPassword | ConvertTo-SecureString -AsPlainText -Force

    # the New-AdUser cmdlet has many parameters. Best use splatting for these.
    $splat = @{
        SamAccountName  = $Username
        Name            = $Name
        Surname         = $Surname
        Path            = $OU
        AccountPassword = $securePassword
        # add more parameters as you see fit here
        # see https://docs.microsoft.com/en-us/powershell/module/addsadministration/new-aduser?view=win10-ps
    }
    New-AdUser @splat

    # output the user and the generated password because you will not be able to retrieve this later..
    [PSCustomObject]@{
        User     = $Username
        Password = $plainTextPassword
    }
}

Пример:

Create-User -Username jdoe -Name 'John Doe' -Surname Doe -OU 'OU=Users, OU=DepartmentX, DC=yourdomain, DC=com'

выведет

User Password
---- --------
jdoe 4Wvhud02
0 голосов
/ 04 марта 2019

Я добавил переменную $password внутри вашей функции, которую вы можете использовать по своему усмотрению.Значение, хранящееся в переменной, является безопасной строкой.Если вам нужно предоставить значение пароля пользователю, вы можете сначала захватить его, не отправляя в командлет ConvertTo-SecureString.

Function Create-User([String] $Username, [String] $Name, [String] $Surname, [String] $OU, [String] $Group){

$password = ((33..126) | ForEach-Object {[char]$_} | get-random -count 20) -join "" | ConvertTo-SecureString -asplaintext -force
New-AdUser -accountpassword $password # You will need to add the rest of your parameters here

}

Вы можете изменить значение -count на любое, соответствующее вашим требованиям безопасности.требования политики.В приведенном выше примере генерируется 20-символьный пароль с использованием случайных символов из позиций таблицы ASCII с 33 по 126. Вы можете обновить этот диапазон, как считаете нужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...