简体   繁体   中英

Add Multiple Users To AD, CSV

I'm attempting to import users via a CSV folder.

I have certain parameters that need to be kept, so I'm only using certain fields.

Powershell

$csv = Import-Csv -Path "newusers.csv"
foreach ($User in $csv)
{
#region Data Generation

$DisplayName = $User.'Surname' + " " + $User.'GivenName'

$Mail = $User.'GivenName' + "." + $User.'Surname' + "@" + "royalberkshire.nhs.uk"

$MailAlias = $User.'GivenName' + "." + $User.'Surname' + "@" + $DNSRoot2

$SInitial = $User.'Surname'[0]
$Initial = $User.'GivenName'[0]
$SAMAccountName = $User.'Surname' + "" + $Initial
$SAMAccountLower = $SAMAccountName.ToLower()
$UserPrincipalName = $User.'Surname'+$Initial
$HD = "U"
$HDir = "\\RBHFILRED002\"
$AC = "Users_01$\"
$DH = "Users_02$\"
$IM = "Users_03$\"
$NS = "Users_04$\"
$TZ = "Users_05$\"

$Folder = if ($SInitial -in 'a','b','c'){$AC}
          ElseIf ($SInitial -in 'd','e','f', 'g','h'){$DH}
          ElseIf ($SInitial -in 'i','j','k', 'l','m'){$IM}
          ElseIf ($SInitial -in 'n','o','p', 'q','r','s'){$NS}
          Else {$TZ}

$group1 = "zz Everyone"
$group2 = "Safeboot Domain Users"

$defaultname = $SAMAccountName
$email = $User.'GivenName' + "." + $User.'Surname'
$i = 1
cls

# Create The User



While ((Get-ADUser -Filter "SamAccountName -eq '$SAMAccountName'" -ErrorAction SilentlyContinue) -ne $null){
    $SamAccountName = $defaultname + [string]$i 
    $Mail = $email + [string]$i + "@" + "royalberkshire.nhs.uk"
    $i++

}


$NewUserParams = @{
    path                  = "OU=Users,OU=RBFT,DC=rbbh-tr,DC=nhs,DC=uk"
    SamAccountName        = $SAMAccountName
    Name                  = $SAMAccountName
    DisplayName           = $DisplayName
    GivenName             = $User.'GivenName'
    Surname               = $User.'Surname'
    EmailAddress          = $Mail
    UserPrincipalName     = "$SAMAccountName@rbbh-tr.nhs.uk"
    Title                 = $title
    HomeDrive             = $HomeDrive
    HomeDirectory         = "$HDir$Folder$SAMAccountName"
    Description           = $User.'Description'
    ChangePasswordAtLogon = $true
    PasswordNeverExpires  = $false
    AccountPassword       = $password
    Enabled               = $true
}



New-ADUser @NewUserParams -ErrorAction SilentlyContinue
Add-ADGroupMember -Identity $group1  -Members $SAMAccountName
Start-Sleep -s 10
Add-ADGroupMember -Identity $group2  -Members $SAMAccountName


cls
echo "Please Wait Whilst We Create The AD Account & Create The Exchange Mailbox.."
Start-Sleep -s 30

Enable-Mailbox -Identity $SAMAccountName
cls

echo "Please Wait Whilst We Activate The Exchange Mailbox..."
Start-Sleep -s 15

# Sets The User Up With The Randomised Password, And Re-Encrypts It For Double Protection
Set-ADAccountPassword -Identity $SAMAccountName -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $random -Force)
cls

}

CSV

User    GivenName   Surname Description
User    James        Timms     Test
User    James        Timms     Test
User    Hulk         Hogan     Test
User    Ultimate     Warrior   Test
User    The          Rock      Test
User    Dwayne       Johnson   Test

The script does not run. It tells me that the Search Filter Cannot Be Recognized.

It just errors on me.

It works with a single user fine using Write-Hosts and Inputs.

However with the CSV it doesn't work.

I must note, this is also the first time I've created users via a CSV on powershell.

Does anybody have any idea on how to fix this issue?

I got it working,

Turns out when I was building the CSV within Excel 2016 it wasn't adding the commas to seperate values.

I ended up opening the CSV within notepad and added commas to separate the values.

Powershell reads the Values based on Comma Seperation, so if there are no commas, it doesn't know what values to push out.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM