Как включить группы при добавлении новых пользователей в Active Directory с помощью powershell - PullRequest
0 голосов
/ 26 июня 2019

У меня есть CSV-файл, который я использую для загрузки нескольких пользователей в Active Directory.Столбец групп в этом будет содержать несколько разных записей.Я хочу иметь возможность включить это как часть моего нового пользовательского сценария.

В настоящее время я запускаю второй сценарий после того, как пользователи созданы для применения групп к каждому пользователю.

# Import active directory module for running AD cmdlets
Import-Module activedirectory

#Store the data from ADUsers.csv in the $ADUsers variable
$ADUsers = Import-csv C:\upload\testbulkupload2.csv

#Loop through each row containing user details in the CSV file 
foreach ($User in $ADUsers)
{
    #Read user data from each field in each row and assign the data to a variable as below

    $Username       = $User.username
    $Password       = $User.password
    $Firstname      = $User.firstname
    $Lastname       = $User.lastname
    $OU             = $User.ou #This field refers to the OU the user account is to be created in
    $email          = $User.email
    $Password       = $User.Password


    #Check to see if the user already exists in AD
    if (Get-ADUser -F {SamAccountName -eq $Username})
    {
         #If user does exist, give a warning
         Write-Warning "A user account with username $Username already exist in Active Directory."
    }
    else
    {
        #User does not exist then proceed to create the new user account

        #Account will be created in the OU provided by the $OU variable read from the CSV file
        New-ADUser `
            -SamAccountName $username `
            -UserPrincipalName "$username@lon.cloud" `
            -Name "$Firstname $Lastname" `
            -GivenName $Firstname `
            -Surname $Lastname `
            -Enabled $True `
            -DisplayName "$Lastname, $Firstname" `
            -Path $OU `
            -AccountPassword (convertto-securestring $Password -AsPlainText -Force) -ChangePasswordAtLogon $False -PasswordNeverExpires:$True

    }
}

и затем я запускаю

$user = 'username'
$groups = 'DRC VPN Users', 'Echo Prod Users'

foreach ($group in $groups) {

    Add-ADGroupMember -Identity $group -Members $user

} 

Я пытаюсь получить их как один сценарий, но мне не повезло, объединяя их.

1 Ответ

0 голосов
/ 26 июня 2019

Командлет New-ADUser имеет много параметров, но нет параметров для настройки членства в группе.Это необходимо сделать после того, как пользователь создан, как показано ниже.

Я несколько изменил код и использовал splatting для лучшего чтения и во избежание использования трудно различимого обратного удара.,Кроме того, нет необходимости сначала захватывать все поля из CSV-файла в переменные.Просто используйте их непосредственно для параметров.

# Import active directory module for running AD cmdlets
Import-Module activedirectory

#Store the data from ADUsers.csv in the $ADUsers variable
$ADUsers = Import-csv C:\upload\testbulkupload2.csv
$groups  = 'DRC VPN Users', 'Echo Prod Users'

#Loop through each row containing user details in the CSV file 
foreach ($User in $ADUsers) {
    # Read user data from each field in each row
    # the username is used more often, so to prevent typing, save that in a variable
    $Username       = $User.username

    # Check to see if the user already exists in AD
    if (Get-ADUser -F "SamAccountName -eq '$Username'") {
         #If user does exist, give a warning
         Write-Warning "A user account with username $Username already exist in Active Directory."
    }
    else {
        # User does not exist then proceed to create the new user account

        # Account will be created in the OU provided by the $OU variable read from the CSV file

        # create a hashtable for splatting the parameters
        $userProps = @{
            SamAccountName        = $username
            UserPrincipalName     = '{0}@lon.cloud' -f $username
            GivenName             = $User.firstname
            Surname               = $User.lastname
            Name                  = '{0} {1)' -f $User.firstname, $User.lastname
            DisplayName           = '{0}, {1}' -f $User.lastname, $User.firstname
            Path                  = $User.ou  # This field refers to the OU the user account is to be created in
            EmailAddress          = $User.email
            AccountPassword       = (ConvertTo-SecureString $User.password -AsPlainText -Force) 
            Enabled               = $true
            ChangePasswordAtLogon = $false
            PasswordNeverExpires  = $true
        }

        New-ADUser @userProps

        # add the new user to the groups here
        foreach ($group in $groups) {
            Add-ADGroupMember -Identity $group -Members $username
        }
    }
}

Обратите внимание, что Add-ADGroupMember может принимать массив имен пользователей в параметре -Members для массового добавления пользователей, но в этом случае я хотел быне советую делать это, чтобы избежать сообщений об ошибках, когда пользователи уже присутствуют в AD (поэтому вы не создали их в приведенном выше коде)

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