Командлет 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 (поэтому вы не создали их в приведенном выше коде)