Powershell Script for Creating Multiple AD Users,mailbox,updating Attributes,email address and adding user to multiple security and distribution groups.
Exchange 2016 and Active directory does not goes well with new user account creation. you cannot duplicate or copy a user account to replicate attributes for a new joiner account. The Only Option is to create the account manually and update it. It is easy to create single user but it becomes time consuming and extremely difficult for creating multiple user accounts without any error.
I decided to use Powershell script which can automate the process without much manual work. This script helps to create a user account, email address, update the attributes and add user to member of security and distribution groups.
Download the Excel file, update the fields with necessary information and save to temp folder.
Copy the below powershell code to notepad and save it as .PS1 file.
# Creating Mailbox on Hybrid Model Exchange environment / updating Attributes / member of Groups
1 2 3 4 5 6 7 8 9 10 11 12 13 |
param( [Parameter( Mandatory=$false)] [string]$URL="exch01" ) $UserCredential = Get-Credential $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$URL/PowerShell/ -Authentication Kerberos -Credential $UserCredential Import-PSSession $Session write-Host 'connected to Exchange Server .......' -NoNewline -ForegroundColor Green $CSVLocation = "C:\temp\createUserMailbox.csv" |
### Step 1 – User Creation
1 2 3 4 5 6 7 8 9 |
write-Host 'Creating User Mailbox .......' -NoNewline -ForegroundColor Green Import-CSV $CSVLocation | ForEach-Object { New-RemoteMailbox -Name $_.Name -FirstName $_.FirstName -Initials $_.Initials -Lastname $_.LastName -UserPrincipalName $_.UPN -OnPremisesOrganizationalUnit $_.OU -Password (ConvertTo-SecureString $_.password -AsPlainText -Force) -ResetPasswordOnNextLogon $false } write-Host 'user account created .......' -ForegroundColor Green Start-Sleep -s 10 |
### Step 2 – user attributes update
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Import AD Module Import-Module ActiveDirectory write-Host 'Starting to update AD Attributes.......' -ForegroundColor Yellow # Import CSV into variable $users $users = Import-Csv -Path C:\temp\createUserMailbox.csv # Loop through CSV and update users if the exist in CVS file foreach ($user in $users) { #Search in specified OU and Update existing attributes Get-ADUser -Filter "SamAccountName -eq '$($user.samaccountname)'" -Properties * -SearchBase "DC=ittechsolution,DC=com" | Set-ADUser -Office $($user.Office) -OfficePhone $($user.officePhone) -MobilePhone $($user.MobilePhone) -fax $($user.fax) -Title $($user.Title) -Department $($user.Department) -Company $($user.Company) -Manager $($user.Manager) -StreetAddress($user.StreetAddress) -City $($user.City) -State $($user.State) -PostalCode $($user.PostalCode) -Replace @{IPPhone=$User.IPPhone} -add @{OtherTelephone=$user.OtherTelephone} } $users = Import-Csv -Path C:\temp\createUserMailbox.csv foreach($user in $users){ #SAMAccountName should be in CSV Set-ADUser $user.samaccountname -Country $User.country } write-Host 'AD Attributes updated .......' -ForegroundColor Yellow |
Adding user to groups ( security group and distribution group)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
write-Host 'Adding user to Groups .......' -ForegroundColor Yellow $Items = Import-Csv -Path C:\temp\createUserMailbox.csv $Items | ForEach-Object { $SamAccountName = $_.SamAccountName $Groups = ($_.Groups).split(",") foreach ($Group in $Groups) { "Adding $SamAccountName to the following group: $Group" Add-ADGroupMember -Identity $Group $SamAccountName } } Write-Host 'done!' -ForegroundColor Green |
Hope this post has helped you, please do comment below and share it.